Java Hibernate中缺少列错误?

Java Hibernate中缺少列错误?,java,hibernate,hibernate-mapping,hibernate-criteria,Java,Hibernate,Hibernate Mapping,Hibernate Criteria,我在Hibernate中遇到缺少列错误。整个错误如下:org.hibernate.hibernateeexception:vaccum.inquiry中缺少列:inquiry\u type\u inquiry\u type\u id。这是我的密码 package com.beans; import java.sql.Timestamp; import javax.management.loading.PrivateClassLoader; import javax.persistence.C

我在Hibernate中遇到缺少列错误。整个错误如下:org.hibernate.hibernateeexception:vaccum.inquiry中缺少列:inquiry\u type\u inquiry\u type\u id。这是我的密码

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;
    }

}
查询_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=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:查询


查询| id |文本|位置|姓名|手机|类型|日期|时间| 表2:查询类型


查询类型(id |查询类型)|
这里,Enquiry.type=Enquiry\u type.Enquiry\u type\u id

您是否可以交叉检查表“Enquiry”中是否有一个名为“Enquiry\u type\u Enquiry\u type\u id”的列


您必须确保表中的所有列都应该存在于实体类中

如何生成数据库架构?如果使用hibernate执行此操作,则应将hibernate.hbm2ddl.auto属性的值更改为“创建”或“创建删除”。

首先确保您的要求,如果要将父元素及其新的OneToMany children by cascade属性插入,请使用下面的一个

@OneToMany(cascade = CascadeType.ALL)
private Enquiry_Type enquiry_type;
注释@JoinColumn表示该实体是关系的所有者,即对应的表有一列,该列带有引用表的外键)


你能把你的表结构也添加到questionWell中吗?)。你已经把表注释为“@table(name=“enquiry\u type”)。所以你的类应该在enquiry\u type表中有列。例如,查询类型和查询类型id应该出现在您的查询类型类中。试试看我已经更新了我的答案,并显示了另一个具有查询类型和查询类型id的类。@ThomasNo。很多事情我已经申请了,但还没有解决@Thomashey您遗漏了查询类型字段的@column name注释。这可能是因为它是外键约束。因此,我尝试在
@ManyToOne(cascade=CascadeType.ALL)
注释上编写此字段,但它表明在这种关系上无法应用此字段@war_Heroyes这是正确的,但是,如果您不编写@column name注释,那么在我使用的“validate”数据库中永远不会创建feild@通过使用“创建”或“创建放置”将9kb以上的数据放入板条箱中,每次都会将整个表重新装入。所以,这不是我想要的解决方案。因为,我想要数据库中以前的数据。是的,它将表1中的字段名“type”更改为“inquiry\u type\u inquiry\u type\u id”,其中包含外键@超过9K
@ManyToOne
@JoinColumn(name = "enquiryTypeID")
private Enquiry_Type enquiry_type;