Java Jpa命名查询:如何获取列的列表

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

我有一个实体orderdetails,其中一个用户可以有许多ordername。我希望使用jpa命名查询按用户ID获取所有ordername。我试过这个

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我不太理解即时结果..!就像普通查询一样