问题
Say I have a class that looks like this:
public class MyClass {
@Id
@Column(name = "ID")
private long Id;
}
I can use a hibernate session to do a get or load on the class like this:
MyClass a = (MyClass)session.get(MyClass.class, new Long(100));
However, assume I have a class with multiple columns as the primary key:
public MyJoinClass implements Serializable {
private static final long serialVersionUID = -5L;
@Id
@Column(name = "ID")
private long id;
@Id
@Column(name = "EMAIL_ADDRESS_ID")
private long emailAddressId;
}
Is it possible to use get or load with such a class?
回答1:
Try to use and @IdClass
or @EmbeddedId
public MyJoinClass implements Serializable {
private static final long serialVersionUID = -5L;
@EmbeddedId
private MyJoinClassKey key;
}
public MyJoinClassKey implements Serializable{
@Column(name = "ID")
private long id;
@Column(name = "EMAIL_ADDRESS_ID")
private long emailAddressId;
}
Then use
MyJoinClass a = (MyJoinClass )session.get(MyJoinClass .class, new MyJoinClassKey (1, "email"));
Take a look at this question, this is broadly explained. Basically hibernate have a mechanism for compound keys.
来源:https://stackoverflow.com/questions/29925784/using-hibernate-get-with-multi-column-primary-key