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

时间:2014-06-10 04:54:05

标签: java jpa entitymanager named-query

我有一个实体订单详细信息,其中用户可以拥有许多订单名,我希望使用jpa命名查询通过userid获取所有订单名称。我试过这个

SELECT o.orderName FROM OrderDetails o WHERE o.userId=:userId; 

由于返回类型在结果集中是List,我执行了这样的查询

getEntityManager().createNamedQuery("getOrderNamesByUserId", 
orderDetail.class).setParameter("userId", userId);

这显然不起作用。如何才能使该查询正常工作?一种方法是迭代List,但我想知道是否还有另一种方法?

2 个答案:

答案 0 :(得分:0)

这是非编译的代码段,您可以尝试以下方法。

@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;
    }

答案 1 :(得分:0)

如果您只需要选择一列(ordername),请使用getResultList()方法。

    Query query = getEntityManager().createNamedQuery("getOrderNamesByUserId", OrderDetail.class);
    query.setParameter("userId", userId);
    List<String> orderNameList = query.getResultList();