未知的專欄中,我有一個數據庫,如下所示@OneToOne映射JPA:在字段列表
Table Enterprise
ent_id (PK)
loc_id
ent_name
Table Location
loc_id (PK)
loc_name
所以我想一個字段添加到企業模型類:「位置」,這是一個@OneToOne關係。不幸的是,當添加這個字段時,應用程序不再工作。
在企業級的代碼位置:
@OneToOne
@JoinColumn(name="loc_id",referencedColumnName="loc_id")
private Location location;
與getter &二傳手的位置。
的PersistenceException:org.hibernate.exception.SQLGrammarException:無法提取的ResultSet
[...]
造成
我加入這個位置字段時,遇到下列錯誤:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列'enterprise0_.location'
在我看來,它正在數據庫中搜索一列'位置',但這一列不在數據庫中。它應該使用loc_id列代替!我嘗試添加@Transient,但這不起作用。
感謝您的幫助!
企業級
@Entity
@Table(name = "Enterprise")
public class Enterprise implements Serializable {
private int entId;
private int locId;
private String entName;
private int entDescription;
@OneToMany(mappedBy = "enterprise")
private List<SalesOrder> salesOrders;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ent_id")
public int getEntId() {
return entId;
}
public void setEntId(int entId) {
this.entId = entId;
}
@Basic
@Column(name = "loc_id")
public int getLocId() {
return locId;
}
public void setLocId(int locId) {
this.locId = locId;
}
@Basic
@Column(name = "ent_name")
public String getEntName() {
return entName;
}
public void setEntName(String entName) {
this.entName = entName;
}
@Basic
@Column(name = "ent_description")
public int getEntDescription() {
return entDescription;
}
public void setEntDescription(int entDescription) {
this.entDescription = entDescription;
}
//bi-directional one-to-one association to Location
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="loc_id",referencedColumnName="loc_id")
private Location location;
public Location getLocation() {
return this.location;
}
public void setLocation(Location location) {
this.location = location;
}
Location類
private int locId;
private String locCountry;
private int locPostcode;
private String locCity;
private String locStreet;
private int locNumber;
private Integer locSubNumber;
@Override
public String toString() {
return locStreet + " " + locNumber + ", " + locPostcode + " " + locCity + ", " + locCountry;
}
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "loc_id")
public int getLocId() {
return locId;
}
public void setLocId(int locId) {
this.locId = locId;
}
@Basic
@Column(name = "loc_country")
public String getLocCountry() {
return locCountry;
}
public void setLocCountry(String locCountry) {
this.locCountry = locCountry;
}
@Basic
@Column(name = "loc_postcode")
public int getLocPostcode() {
return locPostcode;
}
public void setLocPostcode(int locPostcode) {
this.locPostcode = locPostcode;
}
@Basic
@Column(name = "loc_city")
public String getLocCity() {
return locCity;
}
public void setLocCity(String locCity) {
this.locCity = locCity;
}
@Basic
@Column(name = "loc_street")
public String getLocStreet() {
return locStreet;
}
public void setLocStreet(String locStreet) {
this.locStreet = locStreet;
}
@Basic
@Column(name = "loc_number")
public int getLocNumber() {
return locNumber;
}
public void setLocNumber(int locNumber) {
this.locNumber = locNumber;
}
@Basic
@Column(name = "loc_sub_number")
public Integer getLocSubNumber() {
return locSubNumber;
}
public void setLocSubNumber(Integer locSubNumber) {
this.locSubNumber = locSubNumber;
}
CSN定義你發佈你的類的精確映射。 –
@PrerakTiwari我加了班! –
爲什麼在企業級中同時具有int locld和Location位置?你的@OneToOne to Location已經爲你提供了locId屬性..而你說Location-Enterprise是雙向的,但是它在位置方面沒有定義.. – mendieta