【问题标题】:Multiple representations of same entity in spring bootSpring Boot中同一实体的多种表示
【发布时间】:2019-05-14 17:16:48
【问题描述】:

我必须同时更新三个表。当我从邮递员那里点击时,所有表都已成功保存,但当我尝试更新时,它会抛出 catch 异常,就像同一实体的多个表示一样。

员工详情

public class EmployeeDetails implements Serializable{   
@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "user_id", unique = true, length = 11, nullable = false) 
private Integer userId;         
    //other variable

@OneToOne(mappedBy="user",cascade =  CascadeType.ALL)   
private EmployeeAdditionalinfo userAdditionalInfo;
@OneToMany(mappedBy="user",cascade = CascadeType.ALL)
private Set<EducationDetails> educationDetail;
 //getter and setter
}

员工附加信息

public class EmployeeAdditionalinfo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_additional_info_id", unique = true, length = 11, nullable = false)
private Integer userAdditionalInfoId;

//other variable
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "user_id")
private EmployeeDetails user;

@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "address_id")
private EmployeeAddress address;
//getter or setter }

教育详情

public class EducationDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "s_no", unique = true, length = 10, nullable = true)
private Integer sno;

//variable
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "user_id")
private EmployeeDetails user;

//getter and setter }

错误

org.springframework.dao.InvalidDataAccessApiUsageException:正在合并同一实体 [com.icore.Payroll.Attendance.Entity.EmployeeDetails#379] 的多个表示。已分离:[EmployeeDetails [userId=379, userName=user name, firstName=Ganesh1, lastName=Babu, middleInitial=Middle, email=Email, password=passwo, ......]]

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

    我认为您必须仅在关系的一侧配置级联。

    由于EducationDetails 实体内部的级联配置,目前您正在触发从EmployeeDetails 到一组EducationDetails 的所有类型的级联,然后再次返回到EmployeeDetails

    这是有道理的,因为错误表明我们有相同实体的两种不同表示(实例),一个在您尝试刷新的持久性上下文中,另一个在最后级联期间检索。

    您可以尝试删除最后一个配置并最终手动管理它。

    【讨论】:

      猜你喜欢
      • 2017-06-13
      • 1970-01-01
      • 2019-02-14
      • 2021-11-01
      • 1970-01-01
      • 2020-04-11
      • 2019-01-31
      • 2017-11-18
      • 2020-10-26
      相关资源
      最近更新 更多