使用Spring数据JPA获取单列而不查询

时间:2019-04-12 10:22:56

标签: java jpa spring-data-jpa

我只是想避免编写基于方法名称约定的查询和数据。下面是我的实体

@Entity
class Product{
     @Id
     private Integer productId;
     private String productName;
     private String productStrategy;
}

我有以下存储库:

interface ProductRepository extends JPARepository<Product,Integer>{
        public Product findByProductStrategy(String productStrategy);
}

上面的方法和存储库对我来说很好用。但是根据以上结果,我仅使用productName。因此,有什么方法可以使我仅获取productName而不是获取空位记录。

注意:我知道,我们可以使用@Query通过编写HQL查询或本机查询来实现。但是我只想使用方法名称约定而不编写查询就可以做到这一点。

2 个答案:

答案 0 :(得分:3)

考虑从弹簧数据中使用Projections

使用所需字段为您的实体创建一个投影界面。就您而言,它应该看起来像

function init() {
  fetch(url1)
  .then(processJSONtoObj)
  .then(function(dataObject) {
      //test if user signed
      if(dataObject.signedIn) {
        //user signed into domain 1

      } else {
         return fetch(url2)
      }
  })
  .then(processJSONtoObj)
  .then(function(dataObj2) {
      //test if user signed
      if(dataObject2.signedIn) {
        //user signed into domain 2

      } else {
         //user is not signed into either
      }
  })
}
init();

,然后将您的存储库更改为具有投影接口本身的返回类型。春天将负责其余的工作。

public interface ProductName {
  String getProductName();
}

答案 1 :(得分:0)

您可以执行类似的操作,例如只需要productName就可以使用Lite类的事件。

@Entity
@Table(name = "product")
Class ProductLite{
         @Column(name = "productName", nullable=false)
         private String productName;
}