我试图在我的数据库中的“订单”表中搜索“订单”,并且我没有找到它,因为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”转换成字符串值?
谢谢!
答案 0 :(得分:0)
如果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()