Java Jpa命名查询:如何获取列的列表
我有一个实体orderdetails,其中一个用户可以有许多ordername。我希望使用jpa命名查询按用户ID获取所有ordername。我试过这个Java Jpa命名查询:如何获取列的列表,java,jpa,entitymanager,named-query,Java,Jpa,Entitymanager,Named Query,我有一个实体orderdetails,其中一个用户可以有许多ordername。我希望使用jpa命名查询按用户ID获取所有ordername。我试过这个 SELECT o.orderName FROM OrderDetails o WHERE o.userId=:userId; 因为返回类型将是resultset中的List,所以我执行了如下查询 getEntityManager().createNamedQuery("getOrderNamesByUserId", orderDetail
SELECT o.orderName FROM OrderDetails o WHERE o.userId=:userId;
因为返回类型将是resultset中的List,所以我执行了如下查询
getEntityManager().createNamedQuery("getOrderNamesByUserId",
orderDetail.class).setParameter("userId", userId);
这显然是行不通的。我怎样才能让这个查询正常工作?一种方法是迭代列表,但我想知道是否还有其他方法?这是未编译的代码段,您可以尝试以下方法
@Override
public List<OrderDetails> findOrders(Long userId) {
TypedQuery<OrderDetails> query = entityManager.createNamedQuery(
"OrderDetails.getOrderNamesByUserId", OrderDetails.class);
query.setParameter("userId", userId);
List<OrderDetails> list = query.getResultList();
return list;
}
@覆盖
公共列表查找器(长用户ID){
TypedQuery查询=entityManager.createNamedQuery(
“OrderDetails.getOrderNamesByUserId”,OrderDetails.class);
setParameter(“userId”,userId);
List=query.getResultList();
退货清单;
}
如果只需要选择一列(ordername),请使用getResultList()
方法
Query query = getEntityManager().createNamedQuery("getOrderNamesByUserId", OrderDetail.class);
query.setParameter("userId", userId);
List<String> orderNameList = query.getResultList();
Query Query=getEntityManager().createNamedQuery(“getOrderNamesByUserId”,OrderDetail.class);
setParameter(“userId”,userId);
List orderNameList=query.getResultList();
我们不能这样做。因为,query.getResultList()返回列表类型的结果列表。请检查您的查询SELECT o.orderName..
。它返回的是一个OrderDetail
列表。是的,这很明显,但我需要的是list(ordername列表),而不是orderdetails类型的列表(不是List@user3706166一旦在列表中找到了,就可以使用toString()进行检索
method.yes,我想知道是否有任何方法可以即时获得结果..!就像普通查询一样。@user3706166我不太理解即时结果..!就像普通查询一样