Pokud používáte spouštěč, zamýšlená strategie generování je org.hibernate.id.SelectGenerator
. Aby však bylo možné použít tuto strategii, musí být režim spánku schopen po vložení najít vložený řádek, aby zjistil, jakou hodnotu spouštěč přiřadil, existují 2 způsoby, jak toho dosáhnout.
První je konkrétně nakonfigurovat generátor tak, aby mu sdělil sloupec, který definuje jedinečný klíč (alespoň logicky) v tabulce:
@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;
Druhý je přes podporu přirozeného id 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 vám může fungovat. Ve skutečnosti půjde o ovladač JDBC a jak (pokud) implementuje getGeneratedKeys