gpt4 book ai didi

mysql - Java EE 与 JPA,生成奇怪的数据库

转载 作者:行者123 更新时间:2023-11-29 23:54:42 26 4
gpt4 key购买 nike

我试图通过自己制作一些 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 在员工和公司之间创建了一张表。

员工:

  • 身份证
  • 名字
  • 姓氏
  • COMPANY_ID

公司:

  • 身份证
  • 公司名称

公司员工:

  • 公司 ID
  • 员工 ID

我做错了什么?

最佳答案

您忘记告诉 JPA company.employeesemployee.company 的反面:

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

请注意,我在字段名称中添加了 s。这是一个员工列表,所以人数很多。

关于mysql - Java EE 与 JPA,生成奇怪的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25429734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com