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