sql >> Database >  >> RDS >> Mysql

Hoe door Trigger gegenereerde waarde te geven aan Hibernate ValueObject?

Als u een trigger gebruikt, is de beoogde generatiestrategie org.hibernate.id.SelectGenerator . Om deze strategie te kunnen gebruiken, moet Hibernate de ingevoegde rij na het invoegen echter kunnen lokaliseren om te zien welke waarde de trigger heeft toegewezen. Er zijn twee manieren om dit te doen.

De eerste is om de generator specifiek te configureren om hem een ​​kolom te vertellen die een unieke sleutel definieert (althans logisch) in de tabel:

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

De andere is via Hibernate's natural-id-ondersteuning:

@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 kan voor u werken. Het komt echt neer op het JDBC-stuurprogramma en hoe (of) het getGeneratedKeys implementeert



  1. Hoe u alle beperkingen van CHECK &Foreign Key voor een tabel in SQL Server uitschakelt (T-SQL-voorbeelden)

  2. Redundante gegevens in update-statements

  3. array_push() vs. $array[] =.... Wat is het snelst?

  4. Bestanden in een map weergeven met SQL Server