У меня есть Curriculum объект, который следующим образом:Проблемы с отношением @ManyToMany сохраняющейся в справочные таблицы
@Entity
public class Curriculum {
@ManyToMany
private Set<Language> languages;
...
Я пытаюсь упорствовать экземпляр учебной программы, но ограничения в том, что экземпляры Языковых уже в базе.
Как я могу убедиться, что, когда вызов упорствовать сделан, линия вставляется в curriculum
таблицу, таблица curriculum_languages
отображения , но не вlanguage
таблицы, как это справочная таблица, которая уже заселена?
редактировать 1:
-Вот ошибка я получаю, если я не указать Cascade.ALL
атрибут:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.bignibou.domain.Language
-Если я заданным Cascade.ALL
, новые линии с новыми идентификаторами попадают в таблицу language
, которая, очевидно, не то, что я хочу ...
Редактировать 2: Обратите внимание, что я использую Spr ING JPA данных для того, чтобы сохраниться мои экземпляры и данные, поступающие из браузера является объект JSON следующим образом:
{"curriculum":{"languages":[{"id":46,"description":"Français"},{"id":30,"description":"Chinois"}],"firstName":"Julianito","dateOfBirth":"1975-01-06","telephoneNumber":"0608965874","workExperienceInYears":3,"maxNumberChildren":1,"drivingLicense":true}}
Очень интересно. Это как-то еще вопрос, потому что я действительно задавался вопросом, почему вы получаете это исключение, и я не знаю :) –
Можете ли вы показать, как выглядит ваше поле @Version? Какой тип ('int' или' Integer')? –
Насколько я знаю, поле @Version может не быть нулевым (если объект уже сохранен, см. Этот http://stackoverflow.com/questions/16183013/null-version-fields-in-jpa). А теперь просто презумпция: поскольку при декодировании строки JSON без этого поля значение null, hibernate считает единственный случай, когда он может быть нулевым, - это когда он находится в управляемом состоянии (но я не могу понять, почему). –