【问题标题】:How to select only necessary fields in Playframework using JPA如何使用 JPA 在 Playframework 中仅选择必要的字段
【发布时间】:2011-08-22 01:47:02
【问题描述】:

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

【问题讨论】:

    标签: jpa playframework


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-06-13
          • 1970-01-01
          • 2011-02-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多