我有 2 个具有一对多关系的实体,即一个地址可以有多个员工。
MySQL 数据库:
地址
- address_id INT PK 自动增量
- 城市 VARCHAR
- 国家/地区 VARCHAR
员工
- id PK 自动增量
- 名字 VARCHAR
- 姓氏 VARCHAR
- 电子邮件 VARCHAR
- registration_date 日期
- employee_id INT FK
我在 hibernate 中有以下实体,我想获取具有特定位置的所有员工的列表。
hibernate.cfg.xml
<mapping class="com.example.bean.EmployeeBean"/>
<mapping class="com.example.bean.AddressBean"/>
@Entity
@Table(name="ADDRESS")
public class AddressBean {
@Id
@GeneratedValue
@Column(name="ADDRESS_ID")
private int addressId;
@Column(name="CITY")
private String city;
@Column(name="COUNTRY")
private String country;
@OneToMany(mappedBy="EMPLOYEE")
private ArrayList<EmployeeBean> employeeList;
public int getAddressId() {
return addressId;
}
public void setAddressId(int addressId) {
this.addressId = addressId;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public ArrayList<EmployeeBean> getEmployeeList() {
return employeeList;
}
public void setEmployeeList(ArrayList<EmployeeBean> employeeList) {
this.employeeList = employeeList;
}
}
@Entity
@Table(name="EMPLOYEE")
public class EmployeeBean {
@GeneratedValue
@Id
@Column(name="ID")
private int id;
@Column(name="FIRST_NAME")
private String firstName;
@Column(name="LAST_NAME")
private String lastName;
@Column(name="EMAIL")
private String email;
@Column(name="REGISTRATION_DATE")
private String registrationDate;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getRegistrationDate() {
return registrationDate;
}
public void setRegistrationDate(String registrationDate) {
this.registrationDate = registrationDate;
}
}
编译时出现以下错误..我哪里做错了?
Initial SessionFactory creation failed.org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: com.example.bean.AddressBean.employeeList
最佳答案
您不能在 @OneToMany
关系中使用 Collection
的特定实现。
你有问题的部分是
private ArrayList<EmployeeBean> employeeList;
你必须使用
private List<EmployeeBean> employeeList;
另请注意,List
还需要某种排序标准,因此最好使用 Set
:
private Set<EmployeeBean> employeeList;
关于java - hibernate 中的@OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915394/