@Entityクラスにデータを提供するOracleDBというプロジェクトもありました。あなたが言ったように、シーケンスはトリガーを介してテーブルのPKのIDを生成します。これは、これらのクラスの1つで使用した注釈です。
@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;
}
これは、投稿で示した2番目の構文です。トリガーはDBによって管理されるため、Javaコードではトリガーの呼び出しはありません。問題が発生したくない場合は、DBにシーケンスとトリガーを同時に含める必要があったことを覚えています。トリガーは、挿入する行のIDがnullか=0かを尋ねました。この場合、シーケンスLOG_SEQが呼び出されます。
したがって、エンティティの@Idに値を指定すると、その値がDBに挿入され(そのIDが存在しない場合)、シーケンスは呼び出されません。トリガーのコードを見て、それが何が起こるかを正確に確認してください。