我从未使用过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如何进行连接? 以及如何列出对象?
由于
答案 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];
...
}