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.