Я использую @GeneratedValue (стратегии = GenerationType.AUTO) для генерации идентификатора моей сущности.
Сейчас я не знаю, как это работает, но в моей дочерней таблице генерирует значения идентификаторов, которые следуют за родительской последовательностью.
//parent table
@Entity
@Table (name = "parent")
public class Parent {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
@OneToMany (cascade = {CascadeType.ALL}, fetch = FetchType.LAZY)
@JoinColumn (name = "parentId")
@ForeignKey (name = "FKparent")
private List<child> child;
}
//child table
@Entity
@Table (name = "child")
public class Child {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
@Column (name = "id")
private long id;
}
Вставленные значения идентификатора на родительском элементе обновляют последовательность.
Вставленные значения ID для дочернего элемента обновляют последовательность.
При следующей вставке родителя последовательность ... использует значения, обновленные дочерними вставками ...
Эти аннотации не создают две последовательности, только одну. Это правильно / ожидается?
Я вставил свои сущности с помощью службы DAO, используя entityManager.persist(parent);