Для такого объекта, как:
Код: Выделить всё
@Entity
@Table(name = "R_REPRESENTACIO")
public class Representacio {
@Enumerated(EnumType.STRING)
private Estat estat;
...
//getters and setters
...
}
Код: Выделить всё
CREATE TABLE R_REPRESENTACIO (
UUID NUMBER(19) NOT NULL,
...
ESTAT VARCHAR2(255) NULL,
...
);
Код: Выделить всё
EstatКод: Выделить всё
public enum Estat {
VALIDA,
PENDENT_VALIDACIO,
PENDENT_DOCUMENTACIO,
...
}
Код: Выделить всё
public interface RepresentacioRepository extends JpaRepository {
List findAllByEstatIn(List estats);
}
Код: Выделить всё
List estats =
Arrays.asList(Estat.VALIDA,Estat.PENDENT_DOCUMENTACIO,Estat.PENDENT_VALIDACIO);
List allByEstatIn = representacioRepository.findAllByEstatIn(estats);
Код: Выделить всё
2018-08-01 12:30:48.534--ServerSession(1175154004)--Connection(384887832)--Thread(Thread[main,5,main])--SELECT UUID, .... FROM R_REPRESENTACIO WHERE (ESTAT IN ((?,?,?)))
bind => [VALIDA, PENDENT_DOCUMENTACIO, PENDENT_VALIDACIO]
Но это ДОЛЖНО вернуть 1 результат, поскольку этот (эквивалентный) SQL возвращает:
Код: Выделить всё
SELECT count(*) FROM R_REPRESENTACIO WHERE ESTAT IN ('VALIDA','PENDENT_DOCUMENTACIO','PENDENT_VALIDACIO');
COUNT(*)
----------
1
Я не знаю, почему сгенерированный SQL из репозитория JPA не возвращает результаты.
(Я также пробовал findAllByEstatIsIn(List estats) с тем же нулем результаты возвращены).
Есть предложения/объяснения?
PS: обходной путь (не устраивает) с использованием
Код: Выделить всё
List findAllByEstatOrEstatOrEstat(Estat estat, Estat estat2, Estat estat3);
Подробнее здесь: https://stackoverflow.com/questions/516 ... -parameter
Мобильная версия