In meiner Anwendung verwende ich String-Daten JPA mit PostgreSQL. Und für alle Entitäten in meiner Anwendung suche ich den Weg, Ids rein auf Datenbankseite zu generieren.Spring-Daten JPA generiert ID nur auf Datenbankseite vor dem Erstellen
So zum Beispiel, hier meine arbeitet derzeit Version:
@Entity
@Table(name = "permissions")
public class PermissionEntity {
@Id
@SequenceGenerator(name="permSeq", sequenceName="perm_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="permSeq")
private Short id;
...........
}
Ich verwende allocationSize = 1
Konflikte zu vermeiden, weil ich mehrere Instanzen der Anwendung haben werden, die mit der gleichen Datenbank arbeiten.
Aber in diesem Fall jedes Mal vor erstellen permission
, macht die Anwendung Anfrage an die Datenbank perm_id_seq
Sequenz, um den nächsten Wert zu erhalten. Ich möchte id
rein auf Datenbankseite erstellen, wie im Fall mit jdbc template
. Zu tun, dass ich Standardwert für die id
= nextval('perm_id_seq'::regclass)
eingestellt und verändert mein Code:
@Entity
@Table(name = "permissions")
public class PermissionEntity {
@Id
private Short id;
...........
}
Nun wirft es eine Ausnahme, wenn ich versuche, Unternehmen zu retten:
org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save()
Der Grund, warum klar ist, für mich. Aber kann mir jemand sagen, ist es möglich, id
s auf Datenbankseite zu generieren, wie ich überhaupt wünsche?
Vielen Dank! Es funktioniert gut –