#jpa #spring-boot #hsqldb
#jpa #spring-boot #hsqldb
Вопрос:
Родительская таблица:
@Table(name="parent_table_t")
public class ParentTable implements Serializable {
@Id
@Column(name="contact_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer contactId;
---------
---------
@OneToOne (cascade = CascadeType.ALL, mappedBy = "parentTable")
private ChildTable childTable;
}
Дочерняя таблица:
@Table(name="child_table_t")
public class ChildTable implements Serializable {
@Id
@Column(name="child_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer childId;
@Column(name="contact_id")
private Integer contactId;
@JoinColumn(name="contact_id", referencedColumnName = "contact_id", insertable=false, updatable=false)
@OneToOne(cascade = CascadeType.ALL)
private ParentTable parentTable;
}
Мое требование заключается в том, что когда contact_id генерируется в Parent_table_t, он должен быть скопирован в contact_id дочерней таблицы при сохранении.
Когда я вызываю saveAndFlush / save для объекта родительской таблицы, это: генерация автоматического увеличения для Parent-> contact_id. Но Child_table_t -> contact_id всегда имеет значение null . Может кто-нибудь, пожалуйста, помочь в этом. Я использую встроенный в память hsqldb с spring-boot и JPA.
Комментарии:
1. Вам необходимо удалить insertable=false, updatable=false и убедиться, что установлены обе стороны отношения, т.е. Родительская таблица в дочернем = сохраняемый родитель.
Ответ №1:
Вы отметили отношение @JoinColumn с помощью insertable=false, updatable=false , вероятно, потому, что у вас также есть целочисленное отображение для столбца. К сожалению, эти настройки не позволяют JPA устанавливать его со значениями из отношения, которое вместо этого вынуждено устанавливать столбец со значением в атрибуте ContactID .
Вместо этого поместите вставляемый =false, обновляемый=false в @Column .
Комментарии:
1. Спасибо за вашу помощь, но по-прежнему Child_table_t -> ContactID имеет значение null.
2. нужно ли мне инициализировать переменные родительской / дочерней таблицы?