Имах също проект, в който Oracle DB предоставя данните на моите класове @Entity. Както казахте, последователността генерира идентификатора за PK на таблицата чрез тригер. Това бяха поясненията, които използвах в един от тези класове:
@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;
}
Това е вторият синтаксис, който сте показали във вашата публикация. Няма извикване на тригера в кода на Java, защото тригерът се управлява от DB. Спомням си, че трябваше да имам последователността и тригера едновременно в БД, ако не исках да имам проблеми. Тригерът попита дали идентификаторът на реда за вмъкване е нулев или =0. В този случай се извиква последователността LOG_SEQ.
Така че, ако предоставите стойност на @Id на вашия обект, той може да бъде вмъкнат в DB (ако този идентификатор не съществува) и последователността няма да бъде извикана. Опитайте се да видите кода на тригера, за да видите какво точно се случва.