Spring 3.0 ORM с JPA 2.0 ClassCastException

Я пытаюсь использовать JPA 2.0 в Spring 3.0 ORM. Поставщик JPA, в спящем режиме 3.5.0 Бет 3.

Это работает хорошо с JPQL, но когда я пытался использовать CriteriaQuery, исключение происходит:

java.lang. ClassCastException: $Proxy50 не может быть брошен к javax.persistence. TypedQuery на уровне $Proxy38.createQuery (Неизвестный Источник) в com.absorbx.retailx.dao.impl. ShopDaoImpl.findByCrieria(ShopDaoImpl.java:30) в com.absorbx.retailx.dao. SimpleDaoTest.testFindByCriteria(SimpleDaoTest.java:39) в sun.reflect. NativeMethodAccessorImpl.invoke0 (Собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke (Неизвестный Источник) в sun.reflect. DelegatingMethodAccessorImpl.invoke (Неизвестный Источник)

Код ДАО:

@Repository
public class ShopDaoImpl implements
ShopDao {
    @PersistenceContext
    transient EntityManager entityManager;

    @Override
    public Shop findByCrieria() {
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery c = cb.createQuery(Shop.class);
        Root shop = c.from(Shop.class);
        c.select(shop).where(cb.equal(shop.get("name"), "petstore"));
        TypedQuery q = entityManager.createQuery(c);
        return q.getSingleResult();
    }

}

Как я решаю эту проблему?

5
задан Peter Mortensen 20 January 2010 в 17:30
поделиться

1 ответ

Похоже, что BUG весной:

ORG / SPRILLFRAMEWORK / ORM / JPA / SHAREDENTITYMANAGERCREATOR.java :

if (result instanceof Query) {
    Query query = (Query) result;
    ...
    result = Proxy.newProxyInstance(Query.class.getClassLoader(), 
        new Class[] {Query.class}, new DeferredQueryInvocationHandler(query, target));
    ...
}

Было бы лучше создать проблему.

4
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: