2016-10-16 1 views
0

Родитель Таблица:JPA автоматически сгенерированный ключ не отражается на внешнем ключе дочерней таблицы

@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 child_table_t при сохранении.

Когда я вызываю saveAndFlush/save на Parent Table Entity, это: Создание автоматического приращения для Parent-> contact_id. Но Child_table_t -> contact_id всегда равно null. Может кто-то помочь в этом. Я использую in-memorty hsqldb с пружинной загрузкой и JPA.

+0

Вам необходимо удалить insertable = false, updatable = false ** и ** гарантировать, что обе стороны отношения установлены, то есть parentTable в child = родительский объект сохраняется. –

ответ

0

Вы отметили отношения @JoinColumn с insertable = false, updatable = false, вероятно, потому что у вас есть целочисленное сопоставление и для столбца. К сожалению, эти настройки не позволяют JPA устанавливать его со значениями из отношения, которые вместо этого вынуждают устанавливать столбец со значением в атрибуте contactId.

Вставьте вместо этого insertable = false, updatable = false вместо @Column.

+0

Спасибо за помощь, но все же Child_table_t -> contactId имеет значение null. –

+0

Нужно ли инициализировать переменные parentTable/childTable? –

Смежные вопросы