0
複合キーを持つエンティティの多対多マッピングを行っていますが、「フィールドリスト」に「不明な列」の「不明な列」が表示されています。助けてください。以下は私のエンティティクラスとマッピングです。前もって感謝します。複合キーを持つエンティティのJPA2の多対多マッピング
@Entity
@Table(name = "tblrole")
public class Role {
@Column(name = "Role_Name")
String roleName;
@Column(name = "Role_Id", insertable = false, updatable = false)
Integer roleId;
@Column(name = "Company_Id", insertable = false, updatable = false)
Integer companyId;
@EmbeddedId
RolePk rolePk;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tblroleright",
joinColumns = {
@JoinColumn(name = "Role_Id", insertable = false, updatable = false),
@JoinColumn(name = "Company_Id", insertable = false,
updatable = false) })
List<Right> rightList;
}
@Embeddable
public class RolePk implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = "Role_Id")
Integer roleId;
@Column(name = "Company_Id")
Integer companyId;
public Integer getRoleId() {
return roleId;
}
public void setRoleId(Integer roleId) {
this.roleId = roleId;
}
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result +
((companyId == null) ? 0 : companyId.hashCode());
result = prime * result +
((roleId == null) ? 0 : roleId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RolePk other = (RolePk) obj;
if (companyId == null) {
if (other.companyId != null)
return false;
} else if (!companyId.equals(other.companyId))
return false;
if (roleId == null) {
if (other.roleId != null)
return false;
} else if (!roleId.equals(other.roleId))
return false;
return true;
}
public RolePk(Integer roleId, Integer companyId) {
super();
this.roleId = roleId;
this.companyId = companyId;
}
public RolePk() {
super();
// TODO Auto-generated constructor stub
}
}
@Entity
@Table(name = "tblright")
public class Right {
@Column(name = "Right_Name")
String rightName;
@Column(name = "Right_Id", insertable = false, updatable = false)
Integer rightId;
@Column(name = "Company_Id", insertable = false, updatable = false)
Integer companyId;
@EmbeddedId
RightPk rightPk;
public String getRightName() {
return rightName;
}
/*@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "tblroleright",
joinColumns = {
@JoinColumn(name = "Right_Id", insertable = false, updatable = false),
@JoinColumn(name = "Company_Id", insertable = false,
updatable = false) })
List<Role> roleList;*/
public void setRightName(String rightName) {
this.rightName = rightName;
}
public Integer getRightId() {
return rightId;
}
public void setRightId(Integer rightId) {
this.rightId = rightId;
}
/*public List<Role> getRoleList() {
return roleList;
}
public void setRoleList(List<Role> roleList) {
this.roleList = roleList;
}*/
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
public RightPk getRightPk() {
return rightPk;
}
public void setRightPk(RightPk rightPk) {
this.rightPk = rightPk;
}
}
@Embeddable
public class RightPk implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = "Right_Id")
Integer rightId;
@Column(name = "Company_Id")
Integer companyId;
public Integer getRightId() {
return rightId;
}
public void setRightId(Integer rightId) {
this.rightId = rightId;
}
public Integer getCompanyId() {
return companyId;
}
public void setCompanyId(Integer companyId) {
this.companyId = companyId;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result +
((companyId == null) ? 0 : companyId.hashCode());
result = prime * result +
((rightId == null) ? 0 : rightId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RightPk other = (RightPk) obj;
if (companyId == null) {
if (other.companyId != null)
return false;
} else if (!companyId.equals(other.companyId))
return false;
if (rightId == null) {
if (other.rightId != null)
return false;
} else if (!rightId.equals(other.rightId))
return false;
return true;
}
public RightPk(Integer rightId, Integer companyId) {
super();
this.rightId = rightId;
this.companyId = companyId;
}
public RightPk() {
super();
// TODO Auto-generated constructor stub
}
}
「roleId」と「companyId」AND rolePk(同じものを含む)があるのはなぜですか?どちらか一方 –
rolePd – Monika
で照会するのではなく、roleIdとcompanyIdに基づいて照会するので、EmbeddedPKは必要ありません!ちょうどObjectIdClassを入れてください –