У меня есть следующие таблицы:Hibernate: Выберите Родитель с детьми Условия
HEADER
---------------------------------
ID | STATUS
---------------------------------
1 | A
---------------------------------
2 | B
---------------------------------
DATA
--------------------------------------------------
ID | HEADER_ID | DKEY | DVALUE
--------------------------------------------------
1 | 1 | Age | 90
--------------------------------------------------
2 | 1 | Gender | M
--------------------------------------------------
3 | 1 | Score | 1000
--------------------------------------------------
1 | 2 | Age | 8
--------------------------------------------------
2 | 2 | Gender | M
--------------------------------------------------
3 | 2 | Score | 0
--------------------------------------------------
Мои JPA классов:
**@Entity
@Table (name="HEADER")
public class Header {
@Id
@GeneratedValue
private int id;
@Column (name="STATUS")
private String status;
@OneToMany (cascade=CascadeType.ALL, orphanRemoval=true, mappedBy="header")
@LazyCollection(LazyCollectionOption.FALSE)
private Set<Data> dataList;
--- getters and Setters ---
}
@Entity
@Table (name="DATA")
publi class Data {
@Id
@GeneratedValue
private int id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "HEADER_ID", nullable = false)
private Header header;
@Column (name="DKEY")
private String key;
@Column (name="DVALUE")
private String value;
}**
Теперь, моя проблема в том, что я хочу выбрать заголовок с данными, для которых «Возраст» равен «90», а «Пол» равен «М» с использованием спящего режима. Я попытался ниже подход:
выбрать отличный час из заголовка ч соединения слева h.dataList дл, где (dl.key = «Возраст» и dl.value = «90») и (dl.key = «Пол 'и dl.value =' M ')
Это не возвращает мне ничего, потому что условие «(dl.key =' Age 'и dl.value =' 90 ') и (dl.key =' Gender 'и dl.value = 'M') "выполняется в одной записи" DATA ", которая всегда будет давать false.
Если я положил or, "(dl.key = 'Age' и dl.value = '90') или (dl.key = 'Gender' и dl.value = 'M')" результат неверен так как я хотел получить этот заголовок, чтобы данные удовлетворяли возрастным и гендерным условиям.
У меня были часы головной боли из-за этой проблемы, и у меня нет решений, чтобы попробовать больше. Надеюсь, кто-то может указать мне на правильное направление/решение.
Спасибо, что так много.