Hvis du bruger en trigger, er den påtænkte genereringsstrategi org.hibernate.id.SelectGenerator
. Men for at bruge denne strategi skal Hibernate være i stand til at finde den indsatte række efter indsættelse for at se, hvilken værdi triggeren har tildelt, er der 2 måder at gøre dette på.
Først er det specifikt at konfigurere generatoren til at fortælle den en kolonne, der definerer en unik nøgle (i det mindste logisk) i tabellen:
@Id
@Column(name="S_ID")
@GeneratedValue( strategy = "trigger" )
@GenericGenerator(
name="trigger", strategy="org.hibernate.id.SelectGenerator",
parameters = {
@Parameter( name="keys", value="userName" )
}
)
private String s_id;
private String userName;
Den anden er via Hibernates natural-id-understøttelse:
@Id
@Column(name="S_ID")
@GeneratedValue( strategy = "trigger" )
@GenericGenerator( name="trigger", strategy="org.hibernate.id.SelectGenerator" ) )
private String s_id;
@NaturalId
private String userName;
GenerationType.IDENTITY fungerer muligvis for dig. Det kommer virkelig ned på JDBC-driveren, og hvordan (hvis) den implementerer getGeneratedKeys