当前位置: 首页 > 知识库问答 >
问题:

spring boot中同一实体的多表示

宰父冠玉
2023-03-14

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

EmployeeDetails

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 }

InvalidDataAccessapiUsageException:正在合并同一实体[com.icore.payroll.attendance.entity.EmployeeDetails#379]的多个表示形式。已分离:[EmployeeDetails[userid=379,username=用户名,firstname=ganesh1,lastname=babu,middleinitial=middle,email=email,password=passwo,......]]

共有1个答案

秦焱
2023-03-14

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

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

这是有意义的,因为错误表示我们有相同实体的两个不同表示(实例),一个在您试图刷新的持久性上下文中,另一个在上次级联期间检索到。

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

 类似资料:
  • 欢迎光临! 我见过同样的问题,但是解决方案对我没有帮助。 问题出现在我试图再去看牙医时。我添加了hashCode和equals方法,但没有任何帮助。移除级联类型。从访问中合并也没有帮助。我没法把它去掉。从牙医处合并,因为这样会出现另一个问题,在将访问添加到牙医之前,该访问必须存在。 堆栈跟踪: 我的班级: 谢谢你的帮助!

  • 问题内容: 我有3个具有ManyToMany关系的实体: 角色实体: 权限实体: 功能实体: 我做了以下事情: 我创建了3个功能: 然后创建2个权限: Permission2 with Functionality2, Functionality3 然后创建一个角色: 我收到以下异常: java.lang.IllegalStateException:同一实体[com.persistence.enti

  • 我很好奇,在JPA/Hibernate的父实体中,是否可能有几个相同实体的@manytone关系。 示例:我有银行交易,每笔交易都有一个银行合作伙伴,分别担任债权人和债务人。关键是,我只想编辑一次数据。昵称为“情妇”的银行合作伙伴只有一个:),无论是债权人还是债务人。一旦,它将重命名为妻子,所以我不想单独更改。此外,余额是BankPartners在这两个角色中的所有交易的总和。 @实体公共类事务{

  • 当我有用户并且他们有其他用户作为朋友时,我想让应用程序类似于facebook。因此,我创建了一个实体

  • 我必须将属于多个实体的数据存储在一个集合中。但是当我查询然后返回时,我不希望结果中出现不需要的记录。我们如何使用Spring实现这一点?以下是我迄今为止所做的。 1.我在实体中给出相同的集合名称,如下所示。 2、我创建独立的mongoRepository接口 3.问题是 当我做animalRepo的时候。芬德尔或humanRepo。芬德尔,我收集了所有的记录。 4.我所期望的 AnimalRepo

  • 首先,我已经阅读了Hibernate——一个包含多个实体的表?。 然而,我希望将两个实体映射到同一个表,但我希望它们都是实体,我可以从中选择。我的意思是: 一个表:人(id、姓名、出生日期、城市、街道、邮政编码)。 两个实体:人(id、name、dateOfBirth)、地址(id、城市、街道、邮政编码)。 实体之间是1:1的关系,但数据库中仍然是1个表。 如果我在上面的链接中使用建议的解决方案(