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

Triggerで生成された値をHibernateValueObjectに与える方法は?

    トリガーを使用している場合、意図された生成戦略はorg.hibernate.id.SelectGeneratorです。 。ただし、この戦略を使用するには、Hibernateは挿入後に挿入された行を見つけて、トリガーに割り当てられた値を確認できる必要があります。これを行うには2つの方法があります。

    1つは、テーブル内で(少なくとも論理的に)一意のキーを定義する列をジェネレーターに通知するようにジェネレーターを具体的に構成することです。

    @Id
    @Column(name="S_ID")
    @GeneratedValue( strategy = "trigger" )
    @GenericGenerator( 
        name="trigger", strategy="org.hibernate.id.SelectGenerator",
        parameters = {
            @Parameter( name="keys", value="userName" )
        }
    )
    private String s_id;
    
    private String userName;
    

    もう1つは、Hibernateのnatural-idサポートを介したものです:

    @Id
    @Column(name="S_ID")
    @GeneratedValue( strategy = "trigger" )
    @GenericGenerator( name="trigger", strategy="org.hibernate.id.SelectGenerator" ) )
    private String s_id;
    
    @NaturalId
    private String userName;
    

    GenerationType.IDENTITYが機能する場合があります。それは実際にはJDBCドライバーと、それがgetGeneratedKeysをどのように実装するか(もし)に帰着します。



    1. Oracleで時間のかかるSQLクエリのトップ5

    2. Power BIクエリエディターでの列のピボット、ピボット解除、および分割

    3. mysqlテーブルからutf-8コンテンツを読み取る

    4. 外部キーはどこに保存すればよいですか?