具有两个ID的实体

Ily*_*lya 1 java hibernate jpa

我们假设我已经定义了以下实体:

@Entity   
class User{  

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

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

//setters, getters  
}  
Run Code Online (Sandbox Code Playgroud)

问题#1.
当我使用该方法时.find(User.class, someId),我必须设置什么ID?我应该使用长字段ID还是字符串字段代码?或者我可以同时使用长字段ID和字符串字段代码吗?

问题2.
如果我想使用该方法.merge(user),在哪种情况下记录会更新?
情况#1: - id等于DB_ID,代码不等于LOGIN
情况#2: - id不等于DB_ID,代码等于LOGIN
情况#3: - idequals DB_ID和代码等于LOGIN
或任何其他条件?

Dat*_*eus 5

任何具有复合 id(多个Id字段)的类都必须定义自己的IdClass(您还没有这样做).然后将IdClass的一个实例传递给EM.find.这很容易在JPA规范中找到