sql >> Databasteknik >  >> RDS >> Oracle

Hibernate, id, orakel, sekvens

Jag hade också ett projekt där en Oracle DB som tillhandahåller data till mina @Entity-klasser. Som du sa, en sekvens genererar id för tabellens PK via en trigger. Det här var kommentarerna som jag använde i en av dessa klasser:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "LOG_SEQ")
@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getId() {
    return this.id;
}

Detta är den andra syntaxen som du har visat i ditt inlägg. Det finns inget anrop till utlösaren i Java-koden eftersom utlösaren hanteras av DB. Jag minns att jag var tvungen att ha sekvensen och triggern samtidigt i DB om jag inte ville ha problem. Utlösaren frågade om id:t för raden som ska infogas är null eller =0. I detta fall anropas sekvensen LOG_SEQ.

Så om du anger ett värde till @Id för din entitet kan det infogas i DB (om det ID inte finns) och sekvensen skulle inte anropas. Försök att se utlösarens kod för att se exakt vad det händer.




  1. Nya Oracle-kompatibilitetsfunktioner i PostgresPlus Advanced Server 9.3Beta

  2. Beräkna decil från frekvens i MySQL

  3. Hur man visar eller visar verktygsfältet Snabbåtkomst i Word, Excel och PowerPoint

  4. skapa anpassad funktion för datumskillnad exklusive helger och helgdagar i oracle sql