【发布时间】:2015-05-02 16:20:37
【问题描述】:
我在 Hibernate 中出现丢失列错误。整个错误是这样的,org.hibernate.HibernateException: Missing column: enquiry_type_enquiry_type_id in vaccum.enquiry。这是我的代码。
package com.beans;
import java.sql.Timestamp;
import javax.management.loading.PrivateClassLoader;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
import org.hibernate.annotations.Cascade;
@Entity
@Table(name="enquiry")
public class Enquiry {
@Id@GeneratedValue
@Column(name="enquiry_id")
int enquiry_id;
@Column(name="text")
String text;
@Column(name="location")
String location;
@Column(name="name")
String name;
@Column(name="mobile")
String mobile;
@Column(name="date_time")
Timestamp date_time;
/////////////////////
@ManyToOne(cascade = CascadeType.ALL)
private Enquiry_Type enquiry_type;
public Enquiry_Type getEnquiry_type() {
return enquiry_type;
}
public void setEnquiry_type(Enquiry_Type enquiry_type) {
this.enquiry_type = enquiry_type;
}
//////////////////////////
public Enquiry() {
// TODO Auto-generated constructor stub
}
public Enquiry(String text,String location,String name,String mobile,Timestamp date_time) {
this.text = text;
this.location = location;
this.name = name;
this.mobile = mobile;
this.date_time = date_time;
}
public int getEnquiry_id() {
return enquiry_id;
}
public void setEnquiry_id(int enquiry_id) {
this.enquiry_id = enquiry_id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public Timestamp getDate_time() {
return date_time;
}
public void setDate_time(Timestamp date_time) {
this.date_time = date_time;
}
}
Enquiry_Type.java 在这里,
package com.beans;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="enquiry_type")
public class Enquiry_Type {
@Id@GeneratedValue
@Column(name="enquiry_type_id")
int enquiry_id;
@Column(name="enquiry_type")
String enquiry_type;
public Enquiry_Type() {
}
public Enquiry_Type(String enquiry_type) {
this.enquiry_type = enquiry_type;
}
public String getEnquiry_type() {
return enquiry_type;
}
public void setEnquiry_type(String enquiry_type) {
this.enquiry_type = enquiry_type;
}
}
我收到来自SessionFactory factory=cfg.buildSessionFactory(); 的错误。该代码如下所示,
//creating configuration object
Configuration cfg=new Configuration();
cfg.configure("hibernate.cfg.xml");//populates the data of the configuration file
//creating seession factory object
SessionFactory factory=cfg.buildSessionFactory();
//creating session object
Session session=factory.openSession();
//creating transaction object
Transaction t=session.beginTransaction();
表 1:查询
enquiry_id |正文 |位置 |姓名 |移动 |类型 |日期时间 |
表 2:查询类型
enquiry_type_id |查询类型 |
这里,Enquiry.type = Enquiry_Type.enquiry_type_id
【问题讨论】:
-
嘿,您错过了 enquiry_type 字段的@column 名称注释。可能是因为这个
-
是的,因为是外键约束。所以,我试图在
@ManyToOne(cascade = CascadeType.ALL)注释上写这个字段,但它表明在这个关系上你不能应用它。 @war_Hero -
是的,这是正确的,但如果你不写@column 名称注释,那么永远不会在数据库中创建该字段
标签: java hibernate hibernate-mapping hibernate-criteria