我正在使用下面的类,但是给出了类似的异常,原因如下:org.hibernate.DuplicateMappingException:表[]包含由多个物理列名称引用的物理列名称[scheme_name]:[SCHEME],[schemeName]帮助我解决此问题。
@Embeddable
public class DRollSchemesId implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@Column(name = "ROLL_NO", length = 20)
private String rollNo;
@Id
@Column(name = "SCHEME", length = 100, updatable = false, insertable = false )
private String schemeName;
public DRollSchemesId() {
}
public DRollSchemesId(String rollNo, String schemeName) {
this.rollNo = rollNo;
this.schemeName = schemeName;
}
public String getrollNo() {
return this.rollNo;
}
public void setrollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getschemeName() {
return this.schemeName;
}
public void setschemeName(String schemeName) {
this.schemeName = schemeName;
}
这是实体,我正在尝试通过使用那个Embeddable类使用复合键。
@Entity
@Table(name = "D_ROLL_SCHEMES")
@IdClass(DRollSchemesId.class)
public class DRenewalAddonCoverages implements java.io.Serializable{
private static final long serialVersionUID = 1L;
private DRollSchemesId id;
@Id
@Column(name = "ROLL_NO", length = 20)
private String rollNo;
@Id
@Column(name = "SCHEME", length = 100, updatable = true, insertable
= true )
private String schemeName;
public DRenewalAddonCoverages(){
}
@Id
@AttributeOverrides(
{
@AttributeOverride(column = @Column(name = "ROLL_NO",
updatable = true, insertable = true), name = "rollNo"),
@AttributeOverride(column = @Column(name = "SCHEME", updatable
= true, insertable = true), name = "schemeName")
})
@EmbeddedId
public DRollSchemesId getId() {
return this.id;
}
public String getrollNo() {
return rollNo;
}
public void setrollNo(String rollNo) {
this.rollNo = rollNo;
}
public String getschemeName() {
return schemeName;
}
public void setschemeName(String schemeName) {
this.schemeName = schemeName;
}
public void setId(DRollSchemesId id) {
this.id = id;
}
}
最佳答案
尝试如下:
class DRollSchemesId implements Serializable {
private String rollNo;
private String schemeName;
}
@Entity
@Table(name = "D_ROLL_SCHEMES")
@IdClass(DRollSchemesId.class)
public class DRenewalAddonCoverages implements java.io.Serializable {
@Id
@Column(name = "ROLL_NO", length = 20)
private String rollNo;
@Id
@Column(name = "SCHEME", length = 100, updatable = true, insertable = true)
private String schemeName;
}