У меня есть класс "Отец" с отношением "oneToMany":
@Entity
@Table(name = "father")
Public class Father
{
Private String id;
Private Long a;
Private Long b;
@OneToMany(fetch=FetchType.Lazy,
mappedBy = 'father',
cascade = CascadeType.ALL)
Private List<Son> son;
}
Класс "Сын" с отношением "manyToOne":
@Entity
@Table(name = "son")
Public class Son
{
Private String id;
Private Father father;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="id",referencedColumnName = "id", nullable = false, insertable = false, updatable = false)
Public Father getFather(){
return father;
}
}
В моем тесте я хочувыберите «папа» и после «сын» наберите
, чтобы выбрать «папа». Мне нужно использовать соединение из нескольких таблиц, после чего я делаю hql-запрос
String sql = "select father.id, a.a, b.b"+
"from father father join a a on father.id=a.id"+
" join b b onb.id=a.id"+
" where a.id="123";
SQLQuery sqlQuery = session.createSQLQuery(sql).addScalar(...);
query.setParameter("id", "123");
query.list();
hql = "FROM SON WHERE ID =: id";
Query query = session.createQuery(hql);
query.setParameter("id", "123");
query.list(); \\ actually hibernate run select from son and after select from father
hibernate «выбрал из сына» и после этого «снова выбрал из отца» снова .
Как я могу сказать, что Hibernate у меня уже есть отец, поэтому у него нет 'не выбирает самого отца?