java - 使用 CriteriaBuilder 在数据库中搜索 Long 值

标签 java sql database hibernate jpa

我试图在我的数据库中的“订单”表中搜索“订单”,但由于 get() 方法我没有找到它,它只接受字符串而不是长值。 这是代码:

  public List<OrderItemEntity> findOrderItem(OrderItem orderitem){
    long id = orderitem.getId();
    EntityManager em = emf.createEntityManager();
    try {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<OrderItemEntity> cq = cb.createQuery(OrderItemEntity.class);
        Root<OrderItemEntity> root = cq.from(OrderItemEntity.class);
        cq.where(cb.equal(root.get("id"), String.valueOf(id))); <<---- THIS LINE!!
        TypedQuery query = em.createQuery(cq);
        List<OrderItemEntity> result = query.getResultList();
        System.out.println("orderID found is: " + result.get(0).getId());
        return result;
    } finally {
        em.close();
    }
}

有人可以帮忙吗?我如何将“id”转换为字符串值?

谢谢!

最佳答案

如果 id 是您的主 ID,则可以更轻松地找到您的实体:

OrderItemEntity myitem = em.find(OrderItemEntity.class, id);

或者,在您的查询中使用 select 方法,一切都应该正常工作(您应该使用 String.valueof 就可以):

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<OrderItemEntity> cq = cb.createQuery(OrderItemEntity.class);
    Root<OrderItemEntity> root = cq.from(OrderItemEntity.class);
    cq.select( root );
    cq.where(cb.equal(root.get("id"), String.valueOf(id))); 
    TypedQuery query = em.createQuery(cq);
    List<OrderItemEntity> result = query.getResultList()

关于java - 使用 CriteriaBuilder 在数据库中搜索 Long 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019854/

相关文章:

java - 根据构建阶段强制执行不同的设置

java - windows下的MPI Java

sql - 处理递归 cte 中的大量列

java - 未调用 paintComponent

SQL - 避免自连接/内部连接上的重复对?

MySQL,对嵌套计数感到困惑

从 CSV 批量加载 java derby 数据库

mysql - "WHERE ... IN ...", "WHERE ... != ..."查询索引问题

sql - 基础R : Aggregate and sum by two columns

java - 使用resteasy @Path注释时出现NoClassDefFoundError