sql >> データベース >  >> RDS >> Oracle

Hibernate、id、oracle、sequence

    @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が存在しない場合)、シーケンスは呼び出されません。トリガーのコードを見て、それが何が起こるかを正確に確認してください。




    1. MySQLのselectステートメントとCASEまたはIFELSEIF?結果を得る方法がわからない

    2. SQLAlchemy-テスト用のSQLiteと開発用のPostgresql-移植方法は?

    3. MountainLionPostgresが接続できませんでした

    4. LOAD DATALOCALINFILEは禁止されています...PHP