Я использую Spring Data JPA 1.11.8 с Eclipselink, работающим на Weblogic12 C, подключенном к Oracle12 BDD. Мне нужна помощь, чтобы понять, почему этот @Query (10 результатов):
1)
@Query("SELECT r FROM R r WHERE " +
"r.status = com.package.Status.PENDING AND (" +
"( (r.type = com.package.Type.TYPE_B OR r.type = com.package.Type.TYPE_C) AND r.adminOp.code = :code ) OR " +
"(r.type = com.package.Type.TYPE_A AND r.adminAsking.code = :code) )")
List<R> findAll(@Param("code") String code);
возвращает результаты, отличные от суммы этих трех (9 результатов):
2)
@Query("SELECT r FROM R r WHERE r.status = com.package.Status.PENDING AND r.type = com.package.Type.TYPE_A AND r.adminAsking.code = :code")
List<R> findAllTypeA(@Param("code") String code);
3)
@Query("SELECT r FROM R r WHERE r.status = com.package.Status.PENDING AND r.type = com.package.Type.TYPE_B AND r.adminOp.code = :code")
List<R> findAllTypeB(@Param("code") String code);
4)
@Query("SELECT r FROM R r WHERE r.status = com.package.Status.PENDING AND r.type = com.package.Type.TYPE_C AND r.adminOp.code = :code")
List<R> findAllTypeC(@Param("code") String code);
Я не уверен, что неправильно понял концепцию SQL, или это связано с JPQL ... но это сводит меня с ума. Сначала @Query возвращает записи, соответствующие запросам 3 и 4, но записи из запроса 2 не представлены.
SQL Таблицы:
CREATE TABLE R (
UUID NUMBER(19) NOT NULL,
TYPE VARCHAR2(50) NULL,
STATUS VARCHAR2(50) NULL,
ADMINOP_UUID NUMBER(19) NULL,
ADMINASKING_UUID NUMBER(19) NULL,
CONSTRAINT PK_R_REPRESENTACIO PRIMARY KEY (UUID)
);
CREATE TABLE ADMIN (
UUID NUMBER(19) NOT NULL,
CODE VARCHAR2(50) NOT NULL,
...
PRIMARY KEY (UUID)
);
плюс FK ...
Entities:
@Entity
@Table(name = "R")
public class R {
@ManyToOne
private Admin adminOp;
@ManyToOne
private Admin adminAsking;
@Enumerated(EnumType.STRING)
private com.package.Status status;
@Enumerated(EnumType.STRING)
private com.package.Type type;
...
}
@Entity
@Table(name = "ADMIN")
public class Admin {
@Id
private Long uuid;
private String code;
....
}
Что я делаю не так?
PS: сначала было приемлемо задать 3 запроса, но теперь мне нужно быть Page результат, и мне нужно запросить все записи сразу.
PS2: я пытался проанализировать сгенерированный родной SQL, но не понимаю, что не так: S
PS3: я также пытался запустить нативный SQL с такими же результатами