Найти элементы в поле коллекции Spring Data JPA Query - PullRequest
0 голосов
/ 28 июня 2018

У меня есть объект содержит поле коллекции

@Entity
@Table(name = "SERVICE")
    public class Service {

@Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQUENCE")
    @SequenceGenerator(name = "SEQUENCE", sequenceName = "SEQUENCE")
    @Column(name = "ID_SERVICE")
    private Integer id;

        @ElementCollection
    @CollectionTable(name = "SERVICE_JOB",
            joinColumns = @JoinColumn(name = "ID_SERVICE", referencedColumnName = "ID_SERVICE"))
    @Column(name = "JOB")
    private List<String> jobs = new ArrayList<String>();
    }

Я хочу вернуть сервисы, где полевые задания содержат мою переменную "job"

@Query("SELECT DISTINCT s FROM Service s WHERE ?1 in (s.jobs)")
List<Service> findByJob(String job);

Всегда возвращает пустой список, хотя в полевых заданиях содержится моя переменная

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете сделать это так

@Query("select s from Service s WHERE :job in elements(s.jobs)")
List<Service> getAllByJobs(@Param("job") String job)

Чтобы это работало, вам нужно немного изменить свою сущность, например

public class Service {
    @ElementCollection
    private List<String> jobs
}
0 голосов
/ 28 июня 2018

Попробуйте пользовательский запрос, где вы можете использовать member of, например, так:

@Query("SELECT s FROM Service s WHERE ?1 member of s.jobs")
List<Service> findByJobs(String job)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...