休眠 ManyToMany 在另一个表中存在时会增加值



我有@ManyToMany关系的表。当我尝试在表中添加值时,我收到异常"分离的实体传递到持久"。首先,我在 Outpost 中创建了一些数据。如何添加员工?这是我的代码。

员工

@Entity
@Table(name = "Employees")
public class EmployeeEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "employee_id", nullable = false)
private Integer employeeId;
@Column
private String name;
@Column
private String sureName;
@Column
private Long liferayUserId;
@Column
private String phone;
@Column
private String email;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "Employee_Outpost", joinColumns = { @JoinColumn(name = "employee_id") }, inverseJoinColumns = { @JoinColumn(name = "outpost_id") })
private List<OutpostEntity> outposts;

前哨

@Entity
@Table(name = "Outpost")
public class OutpostEntity implements Serializable {
/**
 * 
 */
private static final long serialVersionUID = -7782359215536098452L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "outpost_id", nullable = false)
private Integer outpostID;
@Column
private String province;
@Column
private String city;
@Column
private String postCode;
@Column
private String street;
@Column
private String phone;
@Column
private String openingHours;
@OneToMany(mappedBy = "outpostID", fetch = FetchType.EAGER)
private Set<ShipperEntity> shippers;
@ManyToMany(mappedBy = "outposts", cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
private Set<EmployeeEntity> employees = new HashSet<EmployeeEntity>();
@OneToMany(mappedBy = "outpost", fetch = FetchType.LAZY)
private Set<AreaEntity> areas = new HashSet<AreaEntity>();

功能

EmployeeEntity employee = new EmployeeEntity(model.getName(),
model.getSurename(), model.getPhone(), model.getEmail(),
newUserId, outposts);
employeeJpaRepository.save(employee);

您遇到了PersistentObjectException,因为您的outposts处于分离状态。在调用之前调用employeeJpaRepository.merge(outposts); employeeJpaRepository.save(employee);会有所帮助。

merge()介绍:

将给定对象的状态复制到持久对象上,使用 相同的标识符。如果当前没有持久实例 与会话相关联,它将被加载。返回持久 实例。如果给定实例未保存,请保存副本并返回 它作为新的持久实例。给定的实例不会成为 与会话关联。此操作级联到关联的 关联使用 cascade="merge" 映射的实例。

相关内容

最新更新