如果SpringJPA中没有获取所有属性,自定义查询能否返回模型?
我有一个有很多属性的模型。对于列表,我只想获得其中的一些属性,因为它们中的大多数仅在详细视图中显示 因此,我对我的存储库进行了以下查询:如果SpringJPA中没有获取所有属性,自定义查询能否返回模型?,jpa,spring-data-jpa,Jpa,Spring Data Jpa,我有一个有很多属性的模型。对于列表,我只想获得其中的一些属性,因为它们中的大多数仅在详细视图中显示 因此,我对我的存储库进行了以下查询: JpaRepository< Customer, Long > @Query("SELECT id, name FROM Customer") public List<Customer> findAllSummary(); 即使某些属性为空,是否有办法使自定义查询返回模型对象?或者其他技术更好吗?您可以使用必需的字段和适当的构造函数
JpaRepository< Customer, Long >
@Query("SELECT id, name FROM Customer")
public List<Customer> findAllSummary();
即使某些属性为空,是否有办法使自定义查询返回模型对象?或者其他技术更好吗?您可以使用必需的字段和适当的构造函数创建DTO,并使用构造函数语法从查询返回:
@Query("SELECT new CustomerSummary(id, name) FROM Customer")
public List<CustomerSummary> findAllSummary();
@Query(“从客户中选择新客户摘要(id、名称))
公共列表findAllSummary();
好的,但我想我需要另一个存储库?因为客户存储库是为客户对象键入的?我创建了另一个存储库,但仍然得到错误:java.lang.IllegalArgumentException:不是托管类型。(启动时崩溃)即使我添加CustomerSummary的完整包名,它与Customer位于同一个包中。CustomerSummary是否需要一些特殊注释?不,您不需要其他存储库或特殊注释。只需将其添加到现有存储库中即可。是的,您需要完整的包名。显然,有另一个存储库把它搞砸了-现在它可以工作了-谢谢!按照spring设置其规范的方式,您似乎只能修改SimpleParepository上方法的where子句。是否有一种很好的方法来扩展它以支持自定义构造函数,这样我们也可以利用这些类型的查询?
@Query("SELECT new CustomerSummary(id, name) FROM Customer")
public List<CustomerSummary> findAllSummary();