[quote]
Hibernate注解映射联合主键的三种主要方式 (2012-05-31 22:02:17)转载▼
标签: hibernate 注解 联合主键映射 分类: SSH
联合主键用Hibernate注解映射方式主要有三种:
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id
第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId
第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode.最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class)
[/quote]
实际代码
Hibernate注解映射联合主键的三种主要方式 (2012-05-31 22:02:17)转载▼
标签: hibernate 注解 联合主键映射 分类: SSH
联合主键用Hibernate注解映射方式主要有三种:
第一、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,再将该类注解为@Embeddable,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@Id
第二、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并重写equals和hascode,最后在主类中(该类不包含联合主键类中的字段)保存该联合主键类的一个引用,并生成set和get方法,并将该引用注解为@EmbeddedId
第三、将联合主键的字段单独放在一个类中,该类需要实现java.io.Serializable接口并要重写equals和hashcode.最后在主类中(该类包含联合主键类中的字段)将联合主键字段都注解为@Id,并在该类上方将上这样的注解:@IdClass(联合主键类.class)
[/quote]
实际代码
public class BmRoRolerightmatrixPK implements Serializable{
private static final long serialVersionUID = 1L;
private Long actId;//功能操作ID
private Long roleId;//角色ID
@Column(name = "ACT_ID",unique = false,nullable = true,length = 10)
public Long getActId() {
return actId;
}
public void setActId(Long actId) {
this.actId = actId;
}
@Column(name = "ROLE_ID",unique = false,nullable = true,length = 10)
public Long getRoleId() {
return roleId;
}
public void setRoleId(Long roleId) {
this.roleId = roleId;
}
}
@Entity
@IdClass(BmRoRolerightmatrixPK.class)
@Table(name = "BM_RO_ROLERIGHTMATRIX")
public class BmRoRolerightmatrix implements Serializable{
private static final long serialVersionUID = 1L;
public BmRoRolerightmatrix(){}
//属性
private Long actId;//功能操作ID
private Long roleId;//角色ID
@Id
public Long getActId() {
return this.actId;
}
@Id
public Long getRoleId() {
return this.roleId;
}
...