Jeśli używasz wyzwalacza, zamierzoną strategią generowania jest org.hibernate.id.SelectGenerator
. Jednak, aby użyć tej strategii, Hibernate musi być w stanie zlokalizować wstawiony wiersz po wstawieniu, aby zobaczyć, jaką wartość przypisał wyzwalacz. Są na to 2 sposoby.
Pierwszym z nich jest skonfigurowanie generatora tak, aby wskazywał mu kolumnę, która definiuje unikalny klucz (przynajmniej logicznie) w tabeli:
@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;
Drugi to obsługa naturalnych identyfikatorów 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 może pracować dla Ciebie. To naprawdę sprowadza się do sterownika JDBC i tego, jak (jeśli) zaimplementuje getGeneratedKeys