Using Hibernate Get with Multi-Column Primary Key

久未见 提交于 2019-12-20 03:10:50

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!