JPA сохраняет дочернюю сущность без составного ключаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 JPA сохраняет дочернюю сущность без составного ключа

Сообщение Anonymous »


У меня есть две сущности, назовем их Родитель и Дочерний.

Родитель:

@Getter @Сеттер @Сущность @IdClass(ParentId.class) публичный класс Родитель { @Идентификатор @ManyToOne @JoinColumn(name = "external1_id", nullable = false) частный Внешний1 внешний1; @Идентификатор @ManyToOne @JoinColumn (имя = «external2_id», nullable = false) частный Внешний2 внешний2; @OneToMany(mappedBy = "родитель", cascade = CascadeType.ALL, orphanRemoval = true) частные дети Set = новый LinkedHashSet(); } Ребенок:

@Getter @Сеттер @Сущность общественный класс Child { @Идентификатор @GeneratedValue(стратегия = GenerationType.AUTO) @Column(name = "id", nullable = false) частный длинный идентификатор; @ManyToOne (необязательно = ложь) @JoinColumn(name = «parent_external1_id», referencedColumnName = «external1_id») @JoinColumn(name = «parent_external2_id», referencedColumnName = «external2_id») частный Родитель-родитель; } Сохранение:

var external1 = ... вар внешний2 = ... вар child1 = новый ребенок (); вар child2 = новый ребенок (); список вар = List.of(child1,child2); вар родитель = новый родитель (); родитель.setExternal1(внешний1); родитель.setExternal2(внешний2); родитель.setChildren(список); родительскийрепозиторий.save(родительский); Как вы можете видеть здесь, я пытаюсь автоматически вставить дочерние элементы в соответствующую таблицу, но, поскольку у нее есть ссылка на родительскую таблицу, необходимо автоматически вставить составной ключ родительского элемента в дочернюю таблицу. Это отлично работает с простым первичным ключом (длинным). Здесь он создает DataIntegrityViolationException, поскольку пытается вставить дочерний элемент в виде строки (null,null).

Я слегка абстрагировал остальные свойства, чтобы сделать пример более понятным. Как я могу это исправить?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»