我正在尝试在Spring 3.0 ORM中使用JPA 2.0.JPA供应商是Hibernate 3.5.0-Beta-3.
它适用于JPQL,但是当我尝试使用CriteriaQuery时,会发生异常:
java.lang.ClassCastException:$ Proxy50无法转发到com.absorbx.retailx.dao.impl.ShopDaoImpl.findByCrieria(ShopDaoImpl.java:30)的$ Proxy38.createQuery(未知来源)的javax.persistence.TypedQuery. solar.retailx.dao.SimpleDaoTest.testFindByCriteria(SimpleDaoTest.java:39)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown)资源)
该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();
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
这似乎是 Spring 的一个错误:
org/springframework/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));
...
}
Run Code Online (Sandbox Code Playgroud)
最好创建一个问题。
| 归档时间: |
|
| 查看次数: |
2396 次 |
| 最近记录: |