【发布时间】:2021-12-21 08:43:30
【问题描述】:
我正在努力在 JPA-Hibernate 设置中插入 @OneToMany 实体。
有两个关联的表,其中一个表的外键作为源表的主键。
employee
- id (PK)
employee_location
- employee_id (FK to employee)
这是我的实体:
Employee
@Entity(name = "employee")
class Employee {
@Id
@Column(name = "id")
@GeneratedValue()
private Long id;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "employee_id", referencedColumnName = "id")
private List<EmployeeLocation> employeeLocations;
}
Employee Location
@Entity(name = "employee_location")
class EmployeeLocation {
@Id
@Column(name = "employee_id")
private Long employeeId;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "employee_id", referencedColumnName = "id", insertable = false, updatable = false)
private Employee employee;
}
保存实体:
List<EmployeeLocation> locations = Arrays.asList(new EmployeeLocation(), new EmployeeLocation());
Employee employee = new Employee();
employee.setLocations(locations);
employee.save(); // Throws exceptions
这引发了我这个错误:
org.springframework.orm.jpa.JpaSystemException: ids for this class must be manually assigned before calling save():
我尝试将@Entity 更改为@Embeddable 并删除EmployeeLocation 上的@Id,但它给了我其他Unmapped entity 例外。
如何处理插入/更新@OneToMany 实体?这可能吗?
【问题讨论】:
标签: java spring hibernate jpa spring-data-jpa