У меня такое отображение (однонаправленное):
@Entity
@Table(name = "MY_TEMPLATE")
public class MyTemplate {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "MY_TEMPLATE_ID")
private List<MyObject> myObjects = new ArrayList<>();
...
}
@Entity
@Table(name = "MY_OBJECT")
public class MyObject implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", nullable = false, updatable = false)
private Long id;
}
тогда я пишу код так:
MyTemplate mt = new MyTemplate();
mt.setField1(someVal1);
mt.setField2(someVal2);
mt.setField3(someVal2);
MyObject mdr = new MyObject ();
mt.getMyObjects.add(mdr);//!!!
mdr.setFfld1(smVal1);
mdr.setFfld2(smVal2);
mdr.setFfld3(smVal3);
crudRepository.save (мт);
Hibernate генерирует 3 запроса для этого:
- вставить в
MY_TEMPLATE
для field1
, field2
anf field3
- вставить в
MY_OBJECT
для fld1
, fld2
и fld3
- обновление внешнего ключа набора для
MY_OBJECT
таблицы
Можно ли заставить Hibernate вставлять FK вместе со вставкой в MY_OBJECT
таблицу?