Java 已分离实体传递到持久化创建三个实体时出现错误

Java 已分离实体传递到持久化创建三个实体时出现错误,java,spring,hibernate,jpa,Java,Spring,Hibernate,Jpa,我有3个实体客户详细信息,地址行和银行详细信息。当我试图使用crudepository在h2db中创建条目时,它抛出一个错误,将其中一个声明为分离实体。 有人能告诉我为什么会抛出这个错误吗 Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.ABC.AAP.Domain.Address at org.hibernate.event.internal.D

我有3个实体
客户详细信息
地址行
银行详细信息
。当我试图使用
crudepository
在h2db中创建条目时,它抛出一个错误,将其中一个声明为分离实体。 有人能告诉我为什么会抛出这个错误吗

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.ABC.AAP.Domain.Address
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:120) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:113) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:745) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:713) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.engine.spi.CascadingActions$7.cascade(CascadingActions.java:298) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:492) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:416) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:218) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:151) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:427) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:264) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:193) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:135) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:185) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:128) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:721) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:707) ~[hibernate-core-5.4.20.Final.jar:5.4.20.Final]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:314) ~[spring-orm-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at com.sun.proxy.$Proxy77.persist(Unknown Source) ~[na:na]
        at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:554) ~[spring-data-jpa-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.data.repository.core.support.ImplementationInvocationMetadata.invoke(ImplementationInvocationMetadata.java:72) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:382) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:205) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:549) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:155) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:130) ~[spring-data-commons-2.3.3.RELEASE.jar:2.3.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) ~[spring-tx-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) ~[spring-tx-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) ~[spring-tx-5.2.8.RELEASE.jar:5.2.8.RELEASE]
        ... 21 common frames omitted
此错误在创建实体时抛出。 org.hibernate.persistentObject异常:传递给persist的分离实体:

import javax.persistence.Entity;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.OneToOne;
@实体
公营银行资料{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私人长id;
私有字符串银行名称;
私人字符串帐号;
专用字符串ifsc_代码;
私有字符串参与方\帐户\类型;
@OneTONE(mappedBy=“银行详细信息”)私人客户详细信息
客户信息;
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
结果=素数*结果+(int)(id^(id>>>32));
返回结果;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj)
返回true;
if(obj==null)
返回false;
如果(getClass()!=obj.getClass())
返回false;
银行详情其他=(银行详情)obj;
if(id!=其他.id)
返回false;
返回true;
}
公共银行详细信息(字符串银行名称、字符串账号、字符串ifsc代码、字符串参与方账户类型){
超级();
this.bank\u name=银行名称;
this.account\u number=账号;
此.ifsc\u代码=ifsc\u代码;
this.party\u account\u type=party\u account\u type;
}
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
公共字符串getBank_name(){
返回银行名称;
}
公共作废银行名称(字符串银行名称){
this.bank\u name=银行名称;
}
公共字符串getAccount_number(){
返回帐号;
}
公共作废设置帐号(字符串帐号){
this.account\u number=账号;
}
公共字符串getIfsc_代码(){
返回ifsc_代码;
}
公共无效设置ifsc_代码(字符串ifsc_代码){
此.ifsc\u代码=ifsc\u代码;
}
公共字符串getParty\u account\u type(){
退货方\账户\类型;
}
公共无效设置参与方账户类型(字符串参与方账户类型){
this.party\u account\u type=party\u account\u type;
}
}
  • import java.util.Date;
    导入javax.persistence.CascadeType;
    导入javax.persistence.Entity;
    导入javax.persistence.GeneratedValue;
    导入javax.persistence.GenerationType;
    导入javax.persistence.Id;
    导入javax.persistence.JoinColumn;
    导入javax.persistence.OneToOne;
    @实体
    公共类客户详细信息{
    @身份证
    @GeneratedValue(策略=GenerationType.AUTO)
    私人长id;
    私有字符串参与方代码;
    私有字符串标题;
    私有字符串名;
    私有字符串姓氏;
    私密性;
    私人国籍;
    @OneToOne(级联=级联类型.ALL)
    @JoinColumn(name=“address\u id”,referencedColumnName=“id”)专用地址
    地址线;
    专用字符串移动电话号码;
    私人字符串电子邮件地址;
    私人串党职业;
    私有字符串pan_编号;
    私有字符串tan_编号;
    个人出生日期;
    私有字符串业务类型;
    @OneToOne(级联=级联类型.ALL)
    @JoinColumn(name=“bank\u details\u id”,referencedColumnName=“id”)
    私人银行详情银行详情;
    公共客户详细信息(字符串参与方代码、字符串标题、字符串名、字符串姓、字符串性别、,
    字符串国籍、地址行、字符串手机号、字符串电子邮件id、字符串参与方职业、,
    字符串PANU编号、字符串TANU编号、出生日期、字符串业务类型、银行详情银行详情){
    超级();
    this.party\u code=party\u code;
    this.title=标题;
    this.first\u name=first\u name;
    this.last_name=last_name;
    这个。性=性;
    国籍=国籍;
    this.addressline=地址行;
    this.mobile\u number=mobile\u number;
    this.email\u id=电子邮件\u id;
    这个。党的职业=党的职业;
    this.pan_number=pan_number;
    this.tan_number=tan_number;
    this.date_of_birth=日期_of_birth;
    this.business_utype=业务类型;
    this.bank\u details=bank\u details;
    }
    @凌驾
    公共int hashCode(){
    最终整数素数=31;
    int结果=1;
    结果=素数*结果+(int)(id^(id>>>32));
    返回结果;
    }
    @凌驾
    公共布尔等于(对象obj){
    if(this==obj)
    返回true;
    if(obj==null)
    返回false;
    如果(getClass()!=obj.getClass())
    返回false;
    CustomerDetails other=(CustomerDetails)obj;
    if(id!=其他.id)
    返回false;
    返回true;
    }
    公共字符串getParty_代码(){
    退货方代码;
    }
    公共无效设置参与方代码(字符串参与方代码){