我有@ManyToMany关系的表格。当我尝试在表Employees中添加值时,我得到异常“分离的实体传递给持久化”。首先我在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);
答案 0 :(得分:0)
您遇到了PersistentObjectException
,因为您的outposts
处于分离状态。在调用employeeJpaRepository.merge(outposts);
之前调用employeeJpaRepository.save(employee);
会有所帮助。
merge()
的介绍:
使用。将给定对象的状态复制到持久对象上 相同的标识符如果当前没有持久化实例 与会话相关联,它将被加载。返回持久性 实例。如果给定实例未保存,请保存副本并返回 它作为一个新的持久化实例。给定的实例不会成为 与会话相关联。此操作级联到相关联 如果关联是使用cascade =&#34; merge&#34;。
映射的实例