Spring Data JPA/Boot: findBy ... 或

bin*_*iam 6 java spring-data spring-data-jpa spring-boot

我想在我的存储库中编写一个 finder 方法来查找基于一个字段或另一个字段的对象,同时提供一个参数,例如:

@RepositoryDefinition(domainClass = Person.class, idClass = Long.class)
public interface PersonRepository extends CrudRepository<Person, Long> {

    List<Person> findAllByIdOrAnotherId(someId);
}
Run Code Online (Sandbox Code Playgroud)

如何在不使用 SQL 的情况下做到这一点?

bin*_*iam 6

我向该方法添加了第二个参数并且它起作用了。

List<Transaction> findAllByIdOrParentId(Long id, Long parentId);
Run Code Online (Sandbox Code Playgroud)

这只是方法的定义,因为我将相同的参数从服务传递给方法,如下所示:

List<Transaction> transactions = transactionRepository.findAllByIdOrParentId(transactionId, transactionId);
Run Code Online (Sandbox Code Playgroud)


Mec*_*kov 0

Spring Data JPA 的一大优点是您可以在界面中将自定义查询定义为抽象方法。

简而言之,您只需指定@Entity要查询的字段名称即可定义新的搜索条件。那么,假设我想findAll()通过IdCustomId。和Id都是CustomId我的域类中的字段。我会做:

List<Person> findAllByIdOrCustomId(someId, someCustomId);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请研究以下链接: Spring Data JPA - 定义查询方法