【发布时间】:2018-08-04 05:28:30
【问题描述】:
目前我使用很多查询,它们使用构造函数在 JPQL 中构建值对象,如下所示
@Query("SELECT new com.DocDTO(d.documentId, d.docType) FROM Document d where d.parentId=:parentId")
Set<DocDTO> getDocsWithinFolder(@Param("parentId") Long parentId);
但随着代码变得复杂,我需要使用各种构造函数参数组合来构建对象,从而导致经典的伸缩问题。
正如Effective Java (Item1) 中解释的那样,有没有办法通过传递工厂方法而不是构造函数来构建 JPQL 查询?我在想一些类似
@Query("SELECT DocDTO.query1(d.documentId, d.docType) FROM Document d where d.parentId=:parentId")
Set<DocDTO> getDocsWithinFolder(@Param("parentId") Long parentId);
然后在 DocDTO 类中构建适当的静态工厂方法 query1。这在 JPQL 中可行吗?
【问题讨论】:
标签: java spring hibernate jpa jpql