我有这样一段代码:JPA BigInteger和长期问题
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Offer> query = cb.createQuery(Offer.class);
Root<Offer> root = query.from(Offer.class);
query = query.select(root).where(cb.equal(root.get(Offer_.companyID), company.getId()));
return em.createQuery(query).getResultList()
现在,这看起来不错,花花公子,但它给了我的问题。 offer.companyID和company.id都很长。
这里是什么日志显示我,Hibernate是这样做的:
Hibernate: SELECT C.id FROM company C INNER JOIN company_operators cm
ON cm.company_id = c.id WHERE cm.operators_id = '503'
,这是错误我得到:
12:47:00,581 ERROR [org.jboss.ejb3.invocation] (http--0.0.0.0-9080-5) JBAS014134: EJB Invocation failed on component OfferRepository for method public java.util.List org.jboss.tools.example.richfaces.data.OfferRepository.getOffersbyMemberId(java.lang.Long) throws java.lang.Exception: javax.ejb.EJBException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
什么能在这里是什么问题?
谢谢。你知道为什么JPA返回BigInteger并且可以避免它吗? – Zlatko
我不知道为什么。我有一个应用程序(使用JDeveloper创建)用于使用'Long'的Weblogic,但是当我再次创建相同的应用程序时(使用另一个版本的JDeveloper),它给了我'BigInteger'。数据库是oracle。我可以怀疑这可能是JPA版本的问题。或者我们可能需要在某个地方改变配置中的某些东西!但我没有在这方面证实。 –
看起来像JPA显式地将东西转换成它认为的东西。 – Zlatko