1

次のエンティティを定義したとします。

@Entity   
class User{  

   @Id
   @GeneratedValue
   @Column(name = "DB_ID")
   private long id;

   @Id
   @Column(name = "LOGIN", unique = true)
   private String code;  

//setters, getters  
}  

質問1。
メソッドを使用する場合.find(User.class, someId)、どの ID を設定する必要がありますか? long フィールド ID と String フィールド コードのどちらを使用する必要がありますか? または、長いフィールド ID と文字列フィールド コードを同時に使用できますか?

質問2。
メソッドを使用したい場合.merge(user)、どの場合にレコードが更新されますか?
ケース #1: - ID が DB_ID と等しく、コードが LOGIN と等しくない
ケース #2: - ID が DB_ID と等しくなく、コードが LOGIN と等しい
ケース #3: - DB_ID と等しく、コードが LOGIN と等しい
またはその他の条件?

4

2 に答える 2

5

複合ID (複数の Id フィールド) を持つクラスには、独自の IdClass を定義する必要があります (まだ行っていません)。IdClass のインスタンスは、EM.find に渡すものです。これは、JPA仕様で簡単に見つけることができます

于 2012-05-07T08:37:03.060 に答える
-1

質問 1 では、テーブルの主キーであり、それに基づいて検索する必要があるため、長い ID のみを渡す必要があります。

于 2012-05-07T08:32:44.950 に答える