У меня следующая ситуация:
ошибка переполнения стека
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Base implements Serializable {
@Id
private int Id;
private String fieldA;
private String fieldB;
@ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@Id
private ContainerOfAll owner;
//getters/setters...
}
@Entity
public class ConcreteA extends Base {
@Basic(optional=true)
private String someSpecialProp;
//getters/setters...
}
@Entity
public class ConcreteB extends Base {
@Basic(optional=true)
private String thing;
//getters/setters...
}
@Entity
public class ContainerOfAll {
@Id
private String containerId;
@OneToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="owner")
private Set<Base> elements;
@OneToOne
private ConcreteA specificElement;
//getters/setters...
}
При вызове EntityManager#find()
в ContainerOfAll
будет переполнение стека.Подобные вопросы были решены путем удаления отношения @OneToOne
к новой таблице, которая моделирует один ContainerOfAll
к одному ConcreteA
.Я просто превратил private ConcreteA specificElement
в private int concreteAId
и выполнил ручной поиск в методах EJB.
Мой вопрос, учитывая приведенную ниже настройку, как я могу это сделать, не добавляя таблицы и не играя ссырые идентификаторы?