加入游戏框架

时间:2012-03-16 10:45:33

标签: html sql jpa playframework jpa-2.0

我从未使用过jpa,我想询问是否有加入

如果我这样做

String queryStringGet="SELECT c.* FROM Category c "+

"LEFT JOIN User us ON us.id = c.id "+

"+"WHERE c.user_id="+id;

List<Object[]> list = JPA.em().createNativeQuery(queryString).getResultList();

工作,但作为一个对象出来,我不知道如何在视图中列出:(

由于play.db.jpa.Model没有支持ON如何进行连接? 以及如何列出对象?

由于

3 个答案:

答案 0 :(得分:2)

JPQL不支持联接。有一个explanation of how to do it here

你可以像这样在List中得到结果:

String hql = "SELECT c FROM Category c "
           + "LEFT JOIN User us WITH us.id = c.id "
           + "WHERE c.user_id= :userId";
Query query = JPA.em().createQuery(hql, Categories.class);
query.setParameter("userId", userId);
List<Category> categories = query.getResultList();

答案 1 :(得分:1)

答案 2 :(得分:1)

由于您使用的是本机查询,只要sql在您的数据库上有效,它就会正常运行。

使用自定义查询,此代码将返回具有隐式数据类型的对象数组列表。因此,如果返回的第一列是varchar,则object [0]将是一个字符串。您必须自己映射到您的对象

    List<Category> categories = query.getResultList();
    Category cat = null;
    for (Object[] objects : categories ) {
        if (cat == null)
            cat = new Category();
        cat.name = (String) objects[0];
        ...
    }