如何在 Playframework 中使用 JPA 只选择必要的字段

3

最近我开始尝试使用Play!框架,发现它非常棒,特别是在使用JPA模型方面。它可以帮助加快开发进程。 然而,正如建议的那样,我们应该只选择查询中必要的字段,而不是选择*。我应该如何使用JPA来选择一些字段而不是全部字段呢?是否必须使用JPQL?

3个回答

7
如果您想使用投影(projections),可以直接使用Play! JPA查询工具:
JPA.em().createQuery("select title,author from Article");
Article.find("select title from Article");

但不要尝试过快地进行优化,尽可能经常使用普通实体查找器,在性能敏感的查询中才使用自定义投影。最好围绕缓存物品而不是检索部分对象,因为这会破坏对象封装并且后续肯定会遇到麻烦。


2
我相信您有一个误解。JPA返回实体,也就是通过ORM持久化在数据库中的对象。这意味着您不能仅选择一些字段,而是获取实体中的所有数据。
因此,在使用JPA时,不存在“仅返回几个字段”的情况。如果您使用原始SQL(jdbc),那么这种情况可能会发生。
在使用JPQL时,Play提供了一些辅助方法来简化查询(请参见文档),但除此之外,您必须使用JPQL。

1

虽然现在最好使用扩展play.models的实体,但是您仍然可以通过将查询结果键入为:

public static void myfunction(Long id)
{
    String sqlQuery = "SELECT id FROM mytable WHERE propertie="+id;
    Long resultId = Mytable.find(sqlQuery).first();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接