Si está utilizando un activador, la estrategia de generación prevista es org.hibernate.id.SelectGenerator
. Sin embargo, para usar esta estrategia, Hibernate debe poder ubicar la fila insertada después de la inserción para ver qué valor asignó el disparador. Hay 2 formas de hacerlo.
Primero es configurar específicamente el generador para decirle una columna que defina una clave única (al menos lógicamente) dentro de la tabla:
@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;
El otro es a través del soporte de identificación natural de 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 puede funcionar para usted. Realmente se reducirá al controlador JDBC y cómo (si) implementa getGeneratedKeys