Jestem usign @GeneratedValue (strategy = GenerationType.AUTO), aby wygenerować identyfikator w mojej jednostce.Sekwencja hibernacji na oracle, @GeneratedValue (strategia = GenerationType.AUTO)
Nie wiem jak to działa, ale na mojej tabeli podrzędnej generuje wartości identyfikacyjne, które są zgodne z sekwencją nadrzędną.
//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;
}
Wprowadzone wartości identyfikacyjne na rodzica, aktualizuje sekwencję. Wprowadzone wartości identyfikacyjne na elemencie podrzędnym, aktualizuje sekwencję. Przy następnej wstawce nadrzędnej sekwencja ... używa wartości zaktualizowanych przez wstawienia podrzędne ...
Te adnotacje nie tworzą dwóch sekwencji, tylko jedną. Czy to jest poprawne/oczekiwane?
I dodaje moje podmioty z moją służbą DAO tylko przy użyciu entityManager.persist(parent);
Nie, jeśli użytkownik końcowy widzi, że klucze i zostaje wprowadzony w błąd przez to bycie " nerwowy". I nie mów mi, że klucz musi być ukryty przed użytkownikiem, co nie zawsze jest możliwe ... – Monoman
Nie ma sposobu na utrzymanie identyfikatorów w czasie i monotonii bez dziur w sekwencji, która nie zabija skalowalność. Nie widziałem też użytecznej definicji "skoku" i tego, dlaczego użytkownicy potrzebują niezmiennych identyfikatorów. –