Spring Data JPA: наличие обязательных и необязательных полей в запросе по примеру - PullRequest
0 голосов
/ 14 сентября 2018

Есть ли способ в запросе по примеру указать, какое условие поля должно быть выполнено, а какое нет?

Если у меня есть сущность:

   @Entity
    public class Person extends EntityBase {
    @Size(max = 50)
    @NotNull
    private String firstName;

    @NotNull
    @Size(max = 80)
    private String lastName;

    @NotNull
    @Size(max = 100)
    private Status status;
   }

Есть ли способ, с помощью которого я опрашиваю всех людей, которые имеют определенный статус и либо firstName, либо lastName равны чему-то?

Что-то вроде status = Active AND (firstName = "name" ИЛИ lastName = "name")

Если я это сделаю:

Example<Person> example = Example.of(new Person("name", "name", Status.Active));
repo.findAll(example);

У меня есть возможность с помощью средств сопоставления указать, должны ли совпадать все поля или совпадать любое поле, могу ли я сделать комбинацию? Если это невозможно с запросом по примеру, какой другой способ вы порекомендуете?

1 Ответ

0 голосов
/ 15 сентября 2018

Repository.java

@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
  List<Person> findByStatusAndFirstNameOrLastName(Status status, String firstName, String lastName);
}

PersonService.java

@Service
public class PersonService{

@Autowired
PersonRepository repo;

public List<Person> findByStatusAndFirstNameOrLastName(){
     repo.findByStatusAndFirstNameOrLastName(Status.Active,"name","name");
 }

}
...