– Start
Hibernate 推荐我们使用自动生成的序列为主键,但 Hibernate 也支持复合主键,这时我们需要定义一个主键类,并用 @EmbeddedId 或 @IdClass 修饰。主键类需要有个无参数构造函数,实现序列化接口,并实现 equals() 和 hashCode() 方法。
package shangbo.hibernate.demo005;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
@Entity
public class Book {
@EmbeddedId
private BookPK pk;
private String publisher;
public Book() {
}
public BookPK getPk() {
return pk;
}
public void setPk(BookPK pk) {
this.pk = pk;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
}
package shangbo.hibernate.demo005;
import java.io.Serializable;
import java.util.Objects;
import javax.persistence.Embeddable;
// 需要定义一个主键类并实现序列化接口
@Embeddable
public class BookPK implements Serializable {
private static final long serialVersionUID = 8764734968205185910L;
pr