0

我试图通过自己制作一些 POC 来了解 JPA 是如何工作的。

我创建了一些实体,它们是这样的:

@Entity
@Table(name = "Employee")
public class Employee implements Serializable {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    private String firstName;

    private String lastName;

    @ManyToMany
    @JoinTable(name="SKILLS_EMPLOYEES")
    private List<Skill> skills;

    @ManyToOne
    private Company company;


    public Employee() {
    }

    public Employee(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

//[..getters & setters...]

    public void addSkill(Skill skill) {
        this.skills.add(skill);
        skill.addEmployee(this);
    }

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

}


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

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    private String companyName;

    private List<Employee> employee;

    public Company() {
    }

    public Company(String companyName) {
        this.companyName = companyName;
    }

//[..getters & setters...]

    public void setEmployee(List<Employee> employee) {
        this.employee = employee;
    }

    public void addEmployee(Employee employee) {
        this.employee.add(employee);
    }
}

所以,一个公司可以有员工,一个员工只能有一个公司,但是在我的数据库中,glasshfish 在员工和公司之间创建了一个表。

员工 :

  • ID
  • COMPANY_ID

公司 :

  • ID
  • 公司名

公司职员 :

  • 公司_ID
  • 员工ID

我做错什么了 ?

4

1 回答 1

0

您忘记告诉 JPA 这company.employees是 的反面employee.company

@OneToMany(mappedBy = "company")
private List<Employee> employees;

请注意,我s在字段名称中添加了一个。这是一份员工名单,所以他们有很多。

于 2014-08-21T15:06:47.123 回答