Ако използвате тригер, планираната стратегия за генериране е org.hibernate.id.SelectGenerator
. Въпреки това, за да използва тази стратегия, Hibernate трябва да може да локализира вмъкнатия ред след вмъкването, за да види каква стойност е присвоил тригерът, има 2 начина за това.
Първо е специално да конфигурирате генератора, за да му каже колона, която дефинира уникален ключ (поне логически) в таблицата:
@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;
Другият е чрез поддръжката на естествен идентификатор на Hibernate:
@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 може да работи за вас. Наистина ще се сведе до JDBC драйвера и как (ако) прилага getGeneratedKeys