在Hibernate
中,可以使用@Embeddable
和@EmbeddedId
注解来定义多个主键,并且自动生成表结构。
首先,创建一个表示联合主键的类,使用@Embeddable
注解标注该类。在该类中定义多个主键属性,并重写equals()
和hashCode()
方法。
@Embeddable
public class MyPrimaryKey implements Serializable {
private int primaryKey1;
private int primaryKey2;
// Getters and Setters
@Override
public boolean equals(Object o) {
// 自定义equals方法
}
@Override
public int hashCode() {
// 自定义hashCode方法
}
}
然后,在包含该联合主键的实体类上使用@EmbeddedId
注解,并将联合主键类作为属性添加到实体类中。
@Entity
@Table(name = "my_table")
public class MyEntity {
@EmbeddedId
private MyPrimaryKey id;
// Getters and Setters
}
最后,运行Hibernate
自动建表时,会自动根据联合主键生成相应的表结构。
注意:
Serializable
接口。equals()
和hashCode()
方法时,需要根据属性进行比较和计算哈希值。