Om du använder en utlösare är den avsedda genereringsstrategin org.hibernate.id.SelectGenerator
. Men för att kunna använda denna strategi måste Hibernate kunna hitta den infogade raden efter infogning för att se vilket värde triggern tilldelade det finns två sätt att göra detta.
Det första är att specifikt konfigurera generatorn så att den berättar en kolumn som definierar en unik nyckel (åtminstone logiskt) 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 andra är via Hibernates natural-id-stöd:
@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 kan fungera för dig. Det kommer verkligen att handla om JDBC-drivrutinen och hur (om) den implementerar getGeneratedKeys