我试图在我的数据库中的“订单”表中搜索“订单”,但由于 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/