hibernate中多对一关系出错

hibernate中多对一关系出错,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,在这里,我想在公司@一对多(员工)之间建立一种关系 和员工@多对一(公司) 以及员工(个人)和地址(个人详细信息)之间的@一对一关系 我在执行主类时遇到以下错误 **解决此错误,并让我编写代码以打印有关Employee(person)的所有数据,包括其他两个表记录** 信息:HH000400:使用方言:org.hibernate.dialogue.mysql5dialogue 线程“main”org.hibernate.MappingException中的异常:无法确定的类型为:Rajat.Pr

在这里,我想在公司@一对多(员工)之间建立一种关系 和员工@多对一(公司) 以及员工(个人)和地址(个人详细信息)之间的@一对一关系

我在执行主类时遇到以下错误

**解决此错误,并让我编写代码以打印有关Employee(person)的所有数据,包括其他两个表记录**

信息:HH000400:使用方言:org.hibernate.dialogue.mysql5dialogue 线程“main”org.hibernate.MappingException中的异常:无法确定的类型为:Rajat.Practice1.Company,位于表:Person,for columns:[org.hibernate.mapping.Column(公司)] 位于org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:336) 位于org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:310) 位于org.hibernate.mapping.Property.isValid(Property.java:241) 位于org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:496) 位于org.hibernate.mapping.RootClass.validate(RootClass.java:270) 位于org.hibernate.cfg.Configuration.validate(Configuration.java:1358) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1849) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1928) at Rajat.Practice1.Main.Main(Main.java:21)

((主类))

公司级

    package Rajat.Practice1;

    import java.util.List;

    import javax.persistence.Column;
    import javax.persistence.ElementCollection;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;

    @Entity
    @Table(name="company")
    public class Company {

        @Id
        @GeneratedValue
        @Column(name="c_id")
        private int c_id;
        private String C_name;
        @ElementCollection(targetClass=Person.class)
        private List <Person> person;

        @OneToMany(targetEntity=Person.class, mappedBy="person" , cascade=javax.persistence.CascadeType.ALL, fetch=FetchType.EAGER)
        public List<Person> getPerson() {
            return person;
        }
        public void setPerson(List<Person> person) {
            this.person = person;
        }
        public int getC_id() {
            return c_id;
        }
        public void setC_id(int c_id) {
            this.c_id = c_id;
        }
        public String getC_name() {
            return C_name;
        }
        public void setC_name(String c_name) {
            C_name = c_name;
        }


    }
员工地址(人员详细信息类)`


我试着一个接一个地纠正问题,下面是解决问题的类定义

@Entity
public class Company {

    private int c_id;
    private String name;
    //@ElementCollection(targetClass=Person.class)

    private List<Person> person = new ArrayList<Person>();


    @OneToMany(mappedBy="company",fetch = FetchType.LAZY)
    public List<Person> getPerson() {
        return person;
    }
    public void setPerson(List<Person> person) {
        this.person = person;
    }
    @Id
    @GeneratedValue
    @Column(name="c_id")
    public int getc_id() {
        return c_id;
    }
    public void setc_id(int c_id) {
        this.c_id = c_id;
    }
    @Column(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
人尾类

@Entity
@Table(name="pdetail")
public class PersonDetail {

    @Id
    @GeneratedValue
    @Column(name="pdetail_pk")
    private int p_id;


    @Column(name="city")
    private String City;


    @Column(name="state")
    private String State;



    public String getCity() {
        return City;
    }
    public void setCity(String city) {
        City = city;
    }
    public String getState() {
        return State;
    }
    public void setState(String state) {
        State = state;
    }

}

非常感谢,先生,我复制了您的代码,但出现了一个错误,原因是:java.sql.SQLException:字段“c_id”没有默认值
    package Rajat.Practice1;

    import javax.persistence.Column;

    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;


    @Entity
    @Table(name="pdetail")
    public class PersonDetail {

        @Id
        @GeneratedValue
        @Column(name="pid_pk")
        private int p_id;


        @Column(name="city")
        private String City;


        @Column(name="state")
        private String State;



        public String getCity() {
            return City;
        }
        public void setCity(String city) {
            City = city;
        }
        public String getState() {
            return State;
        }
        public void setState(String state) {
            State = state;
        }

    }
@Entity
public class Company {

    private int c_id;
    private String name;
    //@ElementCollection(targetClass=Person.class)

    private List<Person> person = new ArrayList<Person>();


    @OneToMany(mappedBy="company",fetch = FetchType.LAZY)
    public List<Person> getPerson() {
        return person;
    }
    public void setPerson(List<Person> person) {
        this.person = person;
    }
    @Id
    @GeneratedValue
    @Column(name="c_id")
    public int getc_id() {
        return c_id;
    }
    public void setc_id(int c_id) {
        this.c_id = c_id;
    }
    @Column(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
@Entity
public class Person {

    private int Pid;

    private String name;

    private Company company;

    private PersonDetail p_detail;

    @OneToOne ( cascade=javax.persistence.CascadeType.ALL, fetch=FetchType.EAGER  )
    @JoinColumn(name="pdetail_pk")
    public PersonDetail getP_detail() {
        return p_detail;
    }
    public void setP_detail(PersonDetail p_detail) {
        this.p_detail = p_detail;
    }

    @Id
    @GeneratedValue
    @Column(name="Pid_pk")
    public int getPid() {
        return Pid;
    }
    public void setPid(int pid) {
        Pid = pid;
    }

    @Column(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="c_id", nullable = false)
    public Company getCompany() {
        return company;
    }

    public void setCompany(Company company) {
        this.company = company;
    }

}
@Entity
@Table(name="pdetail")
public class PersonDetail {

    @Id
    @GeneratedValue
    @Column(name="pdetail_pk")
    private int p_id;


    @Column(name="city")
    private String City;


    @Column(name="state")
    private String State;



    public String getCity() {
        return City;
    }
    public void setCity(String city) {
        City = city;
    }
    public String getState() {
        return State;
    }
    public void setState(String state) {
        State = state;
    }

}