春の日JPAは、一部のフィールドを更新します

春データJPAでは、新規および更新操作はセーブ()の方法を用いて行われ、JPAは、我々はそれを挿入または更新したいものの方法により知ることですか?保存による検査後、JPA呼び出しプログラム()アップデータを決定または操作を挿入する方法であるエンティティ・オブジェクトの主キーが割り当てられているかどうかを確認することです。JPAは、第一の一次キー、IDデータベースを使用しているが見つからない場合見つかった場合は、逆に、挿入方法を実行するためには、Updateメソッドを実行するかどうかを問い合わせます。いくつかのフィールドを更新:JPAは挿入または更新の実施を判断することができ、それは我々がいくつかのフィールドを更新するかどうかを判断することはできません。だから我々は、フィールドがNULLに上書きされます割り当てられていません。従って、ターゲット・エンティティは、望ましくないことで更新されます。JPAの更新は2つの方法があります。フィールド:1.を保存するには、保存、主キーを提供することで、()。save()メソッドを使用して物理オブジェクトのフィールドはリポジトリ、このオブジェクトの更新操作を取得しなければならない更新します。2.アノテーションによって、複雑なSQL文を実行する@query。アップデートを実行またはメソッドを削除するときは、コメント@Modifyingと@Transactionalを追加する必要があります。

1
2
3
4
5
6
7
8
9
@Modifying
@Transactional
@Query ( "update Test a set "  +
        "a.name = CASE WHEN :#{#testAre.name} IS NULL THEN a.name ELSE :#{#testAre.name} END ,"  +
        "a.age = CASE WHEN :#{#testAre.age} IS NULL THEN a.age ELSE :#{#testAre.age} END ,"  +
        "a.insertTime = CASE WHEN :#{#testAre.insertTime} IS NULL THEN a.insertTime ELSE :#{#testAre.insertTime} END ,"  +
        "a.spare =  CASE WHEN :#{#testAre.spare} IS NULL THEN a.spare ELSE :#{#testAre.spare} END "  +
        "where a.id = :#{#testAre.id}" )
int  update( @Param ( "testAre" ) TestAre testAre);

おすすめ

転載: www.cnblogs.com/moxiaotao/p/11576994.html