我可以为具有不同签名和 return 类型的多个 JPA 存储库方法使用一个 @Query 吗?
Can I have one @Query for multiple JPA repository methods with different signature and return type?
例如,我们有一个 JPA 存储库,其中包含三种查找完全相同的数据库选择但以不同形式呈现的方法:
public interface UserRepository extends JpaRepository<User, Long> {
... some repository methods ...
List<User> findUsersByCustomCriteria(String criteria);
Set<User> findUsersByCustomCriteria(String criteria, Sort sort);
Page<User> findUsersByCustomCriteria(String criteria, Pageable pageable);
}
和一个查询
@Query("SELECT u FROM User u WHERE ...");
除了 User
class 中的 @NamedQuery
之外,是否有一种简单的方法可以避免重复相同的查询 3 次?
好吧,我意识到可以将查询声明为字符串。但仍然欢迎更优雅的方式建议,可能是我遗漏了什么。
public interface UserRepository extends JpaRepository<User, Long> {
String QUERY_TEXT = "SELECT u FROM User u WHERE ...";
... some repository methods ...
@Query(QUERY_TEXT)
List<User> findUsersByCustomCriteria(String criteria);
@Query(QUERY_TEXT)
Set<User> findUsersByCustomCriteria(String criteria, Sort sort);
@Query(QUERY_TEXT)
Page<User> findUsersByCustomCriteria(String criteria, Pageable pageable);
}
例如,我们有一个 JPA 存储库,其中包含三种查找完全相同的数据库选择但以不同形式呈现的方法:
public interface UserRepository extends JpaRepository<User, Long> {
... some repository methods ...
List<User> findUsersByCustomCriteria(String criteria);
Set<User> findUsersByCustomCriteria(String criteria, Sort sort);
Page<User> findUsersByCustomCriteria(String criteria, Pageable pageable);
}
和一个查询
@Query("SELECT u FROM User u WHERE ...");
除了 User
class 中的 @NamedQuery
之外,是否有一种简单的方法可以避免重复相同的查询 3 次?
好吧,我意识到可以将查询声明为字符串。但仍然欢迎更优雅的方式建议,可能是我遗漏了什么。
public interface UserRepository extends JpaRepository<User, Long> {
String QUERY_TEXT = "SELECT u FROM User u WHERE ...";
... some repository methods ...
@Query(QUERY_TEXT)
List<User> findUsersByCustomCriteria(String criteria);
@Query(QUERY_TEXT)
Set<User> findUsersByCustomCriteria(String criteria, Sort sort);
@Query(QUERY_TEXT)
Page<User> findUsersByCustomCriteria(String criteria, Pageable pageable);
}