答案 0 :(得分:2)
您可以使用命名查询,其中查询必须在名为META-INF/jpa-named-queries.properties
的文件中定义。请参阅spring example:
User.findBySpringDataNamedQuery=select u from User u where u.lastname=?1
在存储库的注释中按名称引用查询,此处为corresponding repository example from spring:
@Query(name = "User.findBySpringDataNamedQuery", countProjection = "u.firstname")
Page<User> findByNamedQueryAndCountProjection(String firstname, Pageable page);
答案 1 :(得分:1)
按照 Ralf Stuckert 的建议,使用 META-INF/jpa-named-queries.properties
来存储命名查询
您可以使用 \
将大型查询拆分为多行。
示例:
Customer.findNameNative=\
SELECT C.NAME \
FROM CUST_TABLE C \
WHERE CONDITIONS
答案 2 :(得分:0)
我认为您正在寻找一个可以将大查询字符串放置为可读的地方?像Mybatis xml。据我所知,在数据 jpa 中没有方法可以做到这一点。
但是您可以将大查询放在存储过程中,并像下面一样轻松调用它。
Call your_stored_procedure_name(param1,param2):