sql >> Database teknologi >  >> RDS >> Mysql

Hvordan giver man Trigger-genereret værdi til Hibernate ValueObject?

Hvis du bruger en trigger, er den påtænkte genereringsstrategi org.hibernate.id.SelectGenerator . Men for at bruge denne strategi skal Hibernate være i stand til at finde den indsatte række efter indsættelse for at se, hvilken værdi triggeren har tildelt, er der 2 måder at gøre dette på.

Først er det specifikt at konfigurere generatoren til at fortælle den en kolonne, der definerer en unik nøgle (i det mindste logisk) i tabellen:

@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;

Den anden er via Hibernates natural-id-understøttelse:

@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 fungerer muligvis for dig. Det kommer virkelig ned på JDBC-driveren, og hvordan (hvis) den implementerer getGeneratedKeys



  1. REGEXP_INSTR() Funktion i Oracle

  2. Hvordan tilføjer man brugerdefinerede attributter til SQL-forbindelsesstrengen?

  3. PostgreSQL-serveren ville ikke lukke ned på Lion (Mac OS 10.7)

  4. MariaDB FIELD() vs FIND_IN_SET():Hvad er forskellen?