我是Spring + Hibernate Web服务的新手。
我已经为district
和pincode
表创建了两个实体,如下所述
District.java
@Entity
@Table(name = "district")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = { "createdDate", "updatedDate" }, allowGetters = true)
public class District {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "district_id")
private int districtId;
@Column(name = "district_name", length = 45)
private String districtName;
@Column(name = "district_code", length = 45)
private String districtCode;
@JsonBackReference(value = "loginId")
@ManyToOne
@JoinColumn(name = "created_by", updatable = false, nullable = false)
private AdminUser createdBy;
@JsonBackReference(value = "lastUpdatedBy")
@ManyToOne
@JoinColumn(name = "last_updated_by")
private AdminUser lastUpdatedBy;
@JsonIgnore
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "state_id")
private State state;
/*@JsonIgnore
@OneToMany(mappedBy = "district",targetEntity=Pincode.class)
private List<Pincode> pincode;*/
@JsonIgnore
@OneToMany(mappedBy="district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Pincode> pincode;
/*@JsonIgnore
@OneToMany(mappedBy="district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<PincodeIdentity> PincodeIdentity;*/
@JsonIgnore
@OneToMany(mappedBy = "district")
private List<College> college;
public List<Pincode> getPincode() {
return pincode;
}
public void setPincode(List<Pincode> pincode) {
this.pincode = pincode;
}
}
Pincode.java
@Entity
@Table(name = "pincode")
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(value = { "createdDate", "updatedDate" }, allowGetters = true)
public class Pincode implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private PincodeIdentity pincodeIdentity;
public PincodeIdentity getPincodeIdentity() {
return pincodeIdentity;
}
public void setPincodeIdentity(PincodeIdentity pincodeIdentity) {
this.pincodeIdentity = pincodeIdentity;
}
}
PincodeIdentity.java (可嵌入)
@Embeddable
public class PincodeIdentity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Column(name = "pincode", nullable = false)
private Long pincode;
/*(fetch = FetchType.EAGER, targetEntity = District.class)*/
@ManyToOne
@JoinColumn(name = "districtId", nullable = false)
private District district;
public Long getPincode() {
return pincode;
}
public void setPincode(Long pincode) {
this.pincode = pincode;
}
public District getDistrict() {
return district;
}
public void setDistrict(District district) {
this.district = district;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PincodeIdentity that = (PincodeIdentity) o;
if (!pincode.equals(that.pincode)) return false;
return district.equals(that.district);
}
@Override
public int hashCode() {
int result = pincode.hashCode();
result = 31 * result + pincode.hashCode();
return result;
}
}
我遇到了这个问题 mapped通过引用未知的目标实体属性:com.studawn.model.District.pincode中的com.studawn.model.Pincode.district
更新后
@OneToMany(mappedBy="pincodeIdentity.district", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
我遇到了地区知识库
Caused by: org.hibernate.QueryException: could not resolve property: pincodeIdentity of: com.studawn.model.District [select distinct(u) from com.studawn.model.District u left join u.pincodeIdentity.pincode p WHERE (u.districtName LIKE :keyword OR u.districtCode LIKE :keyword OR p.pincode LIKE :keyword ) and u.state.stateId =:stateId ]
我在等你的建议 预先感谢