Wenn Sie IDs erstellen möchten, die für mehrere persistente Objekte freigegeben (und eindeutig) sind, verwenden Sie den @TableGenerator. H2 und viele andere Datenbanken haben keine interne Unterstützung für Sequenzen, so dass @SequenceGenerator nicht funktioniert.
Hier ist ein kleines Beispiel haben eine einzigartige/shared @Id über zwei Objekte:
@Entity
public class Class1 {
// setting pkColumnValue of TableGenerator is very important ;-)
@Id
@TableGenerator(
name = "guid",
initialValue = 0,
allocationSize = 10,
table = "GUID_SEQ",
pkColumnName = "GEN_KEY",
valueColumnName = "GEN_VALUE",
pkColumnValue = "GUID")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
private long id;
}
@Entity
public class Class2 {
// use the same pkColumnValue
@Id
@TableGenerator(
name = "guid",
initialValue = 0,
allocationSize = 10,
table = "GUID_SEQ",
pkColumnName = "GEN_KEY",
valueColumnName = "GEN_VALUE",
pkColumnValue = "GUID")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "guid")
private long id;
}
Welche DB verwenden Sie? – joel1di1
H2-Datenbank. generator class = "increment" in reinem Ruhezustand gearbeitet – bunnyjesse112