sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo dar valor generado por Trigger a Hibernate ValueObject?

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