如何使用JPA在Play Framework中仅选择必要的字段

时间:2011-08-22 01:47:02

标签: jpa playframework

我最近玩过Play!框架并发现它很棒,尤其是使用JPA的模型。它有助于加快开发过程。 但是,按照建议,我们应该只在查询中选择必要的字段,而不是选择*。如何使用JPA选择某些字段而不是全部?是否必须使用JPQL?

3 个答案:

答案 0 :(得分:7)

如果您想使用投影,可以使用Play! JPA查询工具直接:

JPA.em().createQuery("select title,author from Article");
Article.find("select title from Article");

但是不要试图优化得太快,请尽可能使用普通实体查找器,因为只能恢复性能敏感查询的自定义投影。你可以更好地缓存一些东西,而不是检索部分对象,因为你打破了你的对象封装,以后肯定会遇到麻烦。

答案 1 :(得分:2)

我相信你有一种误解。 JPA返回实体,即通过ORM持久保存在数据库中的对象。这意味着您不能只选择某些字段,而是获取实体中的所有数据。

所以使用没有“只返回几个字段”这样的东西。如果您使用的是原始SQL(jdbc),那将适用。

在使用JPQL时,Play提供了一些辅助方法来促进查询(参见documentation),但是否则,您必须使用JPQL。

答案 2 :(得分:1)

虽然现在使用扩展play.models的实体会更好。但是,您可以通过键入结果选择查询产生的值:

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