Spring 3.0 ORM с JPA 2.0 ClassCastException - PullRequest
       12

Spring 3.0 ORM с JPA 2.0 ClassCastException

5 голосов
/ 20 января 2010

Я пытаюсь использовать JPA 2.0 в Spring 3.0 ORM. Поставщик JPA: Hibernate 3.5.0-Beta-3.

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

java.lang.ClassCastException: $ Proxy50 не может быть приведен к javax.persistence.TypedQuery at $ 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 (Native Метод) в sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестно Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестно Источник)

Код DAO :

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

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

}

Как мне решить эту проблему?

1 Ответ

4 голосов
/ 20 января 2010

Весной кажется, что это ошибка:

org/springframework/orm/jpa/SharedEntityManagerCreator.java * * 1004

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...