Let’s assume I have defined the following Entity:
@Entity
class User{
@Id
@GeneratedValue
@Column(name = "DB_ID")
private long id;
@Id
@Column(name = "LOGIN", unique = true)
private String code;
//setters, getters
}
Question #1.
When I am using the method .find(User.class, someId), what ID do I have to set? Should I use
the long field id or the String field code? Or I can I use the long field id, and String field code at the same time?
Question #2.
If I want to use the method .merge(user), in which case will the record be updated?
case #1: – id equals DB_ID, code not equals LOGIN
case #2: – id not equals DB_ID, code equals LOGIN
case #3: – idequals DB_ID and code equals LOGIN
or any other condition?
Any class that has composite id (multiple Id fields) has to have its own IdClass defined (which you haven’t done). An instance of the IdClass is what you then pass in to EM.find. This is easily enough found in the JPA spec