Я не гений в подключении Hibernate Entities в Java, так что это может быть очень тривиальный вопрос, но сейчас у меня действительно тяжелые времена, и я не могу понять, как решить эту проблему ...
У меня есть таблица GENERATION и связанный LIMIT_LIST.LIMIT_LIST имеет элемент, который хранится в 3-й таблице (не очень актуально).LIMIT_LIST имеет первичный ключ 3column, и эти три столбца также представлены в таблице GENERATION и связаны между собой, чтобы получить взаимосвязь.
Один элемент Generation может иметь один элемент в таблице Limit_list.
Это соответствующая часть в моем объекте генерации:
@ManyToOne(fetch=FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumns( {
@JoinColumn(name="LIMIT_LIST_OBJID", referencedColumnName="OBJID", nullable=false, insertable=false, updatable=false),
@JoinColumn(name="LIMIT_LIST_TY", referencedColumnName="LIMIT_LIST_TY", nullable=false, insertable=false, updatable=false),
@JoinColumn(name="LIMIT_LIST_KIND_CV", referencedColumnName="LIMIT_LIST_KIND_CV", nullable=false, insertable=false, updatable=false) } )
private LimitList limitList;
Соответствующий внешний ключ в таблице Oracle:
Foreign Key
COLUMN_NAME COLUMN_POSITION
LIMIT_LIST_OBJID 1
LIMIT_LIST_TY 2
LIMIT_LIST_KIND_CV 3
ссылается на: таблицу LIMIT_LIST
Соответствующая частьв LimitList Entity:
@OneToMany(mappedBy = "limitList", fetch = FetchType.EAGER)
private Set<Generation> generations = new HashSet<Generation>();
Это имеет в качестве первичного ключа три столбца:
Primary Key
COLUMN_NAME COLIUMN_POSITION
OBJID 1
LIMIT_LIST_TY 2
LIMIT_LIST_KIND_CV 3
Моя проблема: если я сделаю эти вызовы подряд в моем коде:
EntityManager.persist(limitList);
EntityManager.persist(limitListElements);
EntityManager.persist(generation);
Я получаю исключение ORA-00001.Мне кажется, что Hibernate пытается вставить limitList дважды ... Вот почему Oracle выдает ошибку первичного ключа.
Если я удаляю limitList и limitListElements сохраняют часть, потому что я предполагаю, что Hibernate позаботится о...
EntityManager.persist(generation);
это я получил это исключение Oracle:
ORA-02291
Кажется, ничего не работает, и я не знаю, что я сделал не так в сущностиконфиги ... Не могли бы вы мне помочь?Спасибо:)
PS .: эти две постоянные функции работают нормально:
EntityManager.persist(limitList);
EntityManager.persist(limitListElements);
Список и элементы сохраняются без ошибок, проблема возникает, когда я пытаюсь подключитьсписок с моим поколением ...
РЕДАКТИРОВАТЬ:
сущность limitList и их отношения
@OneToMany(mappedBy = "limitList", fetch = FetchType.LAZY)
private Set<LimitListElement> elements = new HashSet<RestrictionListElement>();
@OneToMany(mappedBy = "limitList", fetch = FetchType.EAGER)
private Set<Generation> generations = new HashSetGeneration>();
EDIT2:
Это составной идентификаторlimitList:
@EmbeddedId
@AttributeOverrides( {
@AttributeOverride(name="objId", column=@Column(name="OBJID", nullable=false, precision=22, scale=0) ),
@AttributeOverride(name="limitListTy", column=@Column(name="LIMIT_LIST_TY", nullable=false, precision=22, scale=0) ),
@AttributeOverride(name="limitListKindCv", column=@Column(name="LIMIT_LIST_KIND_CV", nullable=false, precision=22, scale=0) ) } )
private LimitListId id;