java - JPA BigInteger 和 Long 问题

标签 java hibernate jpa long-integer 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

这可能是什么问题?

最佳答案

嗯,我想我已经找到答案了。

我所显示的代码上方有一行

Company company = companyRepo.getUsersCompany(memberId);

因此,我的查询中的company.getId()是从postgresql获取公司实体。在此过程中,它将 id 隐式转换为“BigInteger”。

所以我要做的就是显式转换为 Long,现在我的方法如下所示:

    Company company = companyRepo.getUsersCompany(memberId);
    if (company == null) return null;
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Offer> query = cb.createQuery(Offer.class);
    Root<Offer> root = query.from(Offer.class);
    Long companyId = company.getId();
    query = query.select(root).where(cb.equal(root.get(Offer_.companyID), companyId));
    return em.createQuery(query).getResultList();

关于java - JPA BigInteger 和 Long 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929979/

相关文章:

jpa - eclipselink J2SE fetchType LAZY高效使用

java - Hibernate 抛出 "NULL not allowed for column",因为使用 @MapsId 时 SQL INSERT 中缺少 JPA OneToOne 关系 FK

java - JPA 查询语法异常 : unexpected AST node: {vector} For In condition

java - 如何创建随机字母的单词?

java - 安装maven和maven插件

java - 如何解决: org. hibernate.HibernateException: createCriteria在没有 Activity 事务的情况下无效

java - 在内容空间中导航结果

java - 具有依赖注入(inject)的 JPA Controller

java - 如何在 play (2.3) 框架内从 Java Controller 代码中的 String 变量构造 Html 对象

java - 加密 key 交换的同行评审