у меня есть две сущности с комбинированными примарными ключами:
@Entity
@IdClass(APK.class)
public class A {
@Id
Integer pk1;
@Id
Integer pk2;
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER,mappedBy="a")
List<B> b = new ArrayList<B>();
String name;
...
}
@Entity
@IdClass(BPK.class)
public class B {
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "pk1", referencedColumnName = "pk1"),
@JoinColumn(name = "pk2", referencedColumnName = "pk2")
})
@Id
private A a;
@Id
Integer additional_key_part;
}
Когда я загружаю класс «A», список загружается правильно с нетерпением, проблема в том, что он не работает, когда я загружаюкласс "B".
Класс "B" будет правильно использовать соединение с A, но будут заполнены только поля PK поля A (pk1, pk2), а не остальные.
Настоящая проблема возникает, когда объект отправляется клиенту, у которого нет транзакции, поэтому отложенная загрузка невозможна.Единственное, что, похоже, работает, - это вызвать a.getName () или что-то еще, чтобы запустить отложенную загрузку перед закрытием транзакции, но это не совсем правильный способ.
Итак, как убедиться, что объекти все его дочерние элементы загружены?