-1

我到处搜索,但无法获得我需要的东西 无法获得相应的输出。我在 SQL 中有两个类 Employee 和 EmployeeLocation 以及它们各自的表。

这是我的表 For EmployeeLocation Table multiple emp_ids

桌子

MyScenario -> 在员工表中,id 是主键并且具有唯一值,但在 EmployeeLocation 表中,我在 EmployeeLocation 表中将该员工 id 作为emp_id,它不是唯一的,多次出现。

我正在尝试实现@OnetoMany 协会,但没有成功。帮助赞赏。

class Employee {
     private integer id;
     @OneToMany(fetch=FetchType.EAGER,mappedBy="empId")
     private List<EmployeeLocation> employeeLocation;
     //getters and setters
}

 class EmployeeLocation {
      private integer id;
      private integer emp_id; 
      // emp_id is a primary key in employee table
      //fields  getters and setters 
}
4

2 回答 2

0

您需要在和上映射一些employee属性来映射,如下所示:EmployeeLocationJoinColumnemp_id

@Entity
class Employee {
     @Id
     private Integer id;

     @OneToMany(fetch=FetchType.EAGER, mappedBy="employee") // refer to the atribute name of the entity Employee on the EmployeeLocation
     private List<EmployeeLocation> employeeLocation;
     //getters and setters
}

 @Entity
 class EmployeeLocation {

      @Id
      private Integer id;

      @JoinColumn(name = "emp_id") // name of the column on database table
      @ManyToOne(fetch = FetchType.LAZY, optional = false)
      private Employee employee; 
}
于 2018-09-14T12:56:50.667 回答
0

实际上,EmployeeLocation您需要引用映射Employee而不是emp_id,因为映射是基于实体的。

所以这就是你需要的:

员工位置

class EmployeeLocation {

      @Id
      private int id;
      @ManyToOne(cascade = CascadeType.ALL)
      private Employee emp; 
}

员工:

class Employee {

     @Id
     private int emp_id;
     @OneToMany(fetch=FetchType.EAGER, mappedBy="emp")
     @JoinColumn(name = "emp_id")
     private List<EmployeeLocation> employeeLocation;
}

笔记:

  • 不要错过@Id为字段指定注释,id以便可以正确映射实体。
  • 注意您使用的类型,Java区分大小写,没有integer类型,它是intor 或Integer
  • Set请注意,建议ListOneToMany.
于 2018-09-14T13:51:13.373 回答