Java 使用hibernate从父实体在子实体中插入数据时未找到ParentKey异常

Java 使用hibernate从父实体在子实体中插入数据时未找到ParentKey异常,java,hibernate,spring-orm,Java,Hibernate,Spring Orm,我的需要是保存父表,父实体将在子表中级联数据(插入/更新)。早些时候,我们可以节省。我们对主键/外键进行了一些修改,之后在保存数据时出现以下异常 谢谢你,请帮忙。在过去的两天里,我们一直在努力解决此错误 异常和堆栈跟踪:: 14:13:34,735 INFO [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] (http-localhost-127.0.0.1-8080-1) HHH000010: On release of

我的需要是保存父表,父实体将在子表中级联数据(插入/更新)。早些时候,我们可以节省。我们对主键/外键进行了一些修改,之后在保存数据时出现以下异常

谢谢你,请帮忙。在过去的两天里,我们一直在努力解决此错误

异常和堆栈跟踪::

14:13:34,735 INFO  [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] (http-localhost-127.0.0.1-8080-1) HHH000010: On release of batch it still contained JDBC statements
14:13:34,749 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/RomCode2].[Resteasy]] (http-localhost-127.0.0.1-8080-1) Servlet.service() for servlet Resteasy threw exception: org.jboss.resteasy.spi.UnhandledException: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [ROMCODE.RC_USER_X_COMPANY_FK]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:76) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:212) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:165) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:392) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:199) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
    at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
Caused by: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [ROMCODE.RC_USER_X_COMPANY_FK]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.springframework.orm.hibernate4.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:163) [spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.orm.hibernate4.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:730) [spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:592) [spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) [spring-tx-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) [spring-aop-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    at com.sun.proxy.$Proxy115.createUser(Unknown Source)
    at com.st.ict.romcode.rest.impl.UserManagementRestServiceImpl.createUser(UserManagementRestServiceImpl.java:78) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_45]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_45]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_45]
    at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_45]
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:376) [resteasy-jaxrs-3.0.13.Final.jar:3.0.13.Final]
    ... 18 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:74) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:58) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3079) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3521) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:393) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:385) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:301) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:349) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1159) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    at org.springframework.orm.hibernate4.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584) [spring-orm-4.2.5.RELEASE.jar:4.2.5.RELEASE]
    ... 36 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (ROMCODE.RC_USER_X_COMPANY_FK) violated - parent key not found

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1017) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:655) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:249) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:566) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:215) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:58) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1075) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3820) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3897) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361) [ojdbc7-12.1.0.1.0.jar:12.1.0.1.0]
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:186) [hibernate-core-4.2.8.Final.jar:4.2.8.Final]
    ... 50 more
我的实体映射::

Parent Class::
@Entity
@Table(name = "RC_CUST_RESP_USER", )
public class RcCustRespUser implements java.io.Serializable {
{
    private long rcCustId;
    private Set<RcUserXGroup> rcUserXGroups = new HashSet<RcUserXGroup>(0);
    private Set<RcUserXCompany> rcUserXCompanies = new HashSet<RcUserXCompany>(0);

public RcCustRespUser() {
    }

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO,generator="rc_cust_resp_user_seq")
    @SequenceGenerator(name="rc_cust_resp_user_seq", sequenceName="rc_cust_resp_user_seq", allocationSize = 1)
    @Column(name = "RC_CUST_ID", unique = true, nullable = false)
     public long getRcCustId() {
        return rcCustId;
    }

    public void setRcCustId(long rcCustId) {
        this.rcCustId = rcCustId;
    }

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "rcCustRespUser")
    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
    @Fetch(FetchMode.JOIN)
    public Set<RcUserXGroup> getRcUserXGroups() {
        return this.rcUserXGroups;
    }

    public void setRcUserXGroups(Set<RcUserXGroup> rcUserXGroups) {
        this.rcUserXGroups = rcUserXGroups;
    }

@OneToMany(fetch = FetchType.LAZY, mappedBy = "rcCustRespUser")
    @Cascade({CascadeType.SAVE_UPDATE, CascadeType.DELETE})
    @Fetch(FetchMode.JOIN)
    public Set<RcUserXCompany> getRcUserXCompanies() {
        return this.rcUserXCompanies;
    }

    public void setRcUserXCompanies(Set<RcUserXCompany> rcUserXCompanies) {
        this.rcUserXCompanies = rcUserXCompanies;
    }

}
第二个子表::

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;




@Entity
@Table(name = "RC_USER_X_GROUP", schema = "ROMCODE")
public class RcUserXGroup implements java.io.Serializable {

    private RcUserXGroupId id;
    private RcCustRespUser rcCustRespUser;

    public RcUserXGroup() {
    }

    public RcUserXGroup(RcUserXGroupId id, RcCustRespUser rcCustRespUser) {
        this.id = id;
        this.rcCustRespUser = rcCustRespUser;
    }

    @EmbeddedId
    @AttributeOverrides({
            @AttributeOverride(name = "rcCustRespUserName", column = @Column(name = "RC_CUST_ID", nullable = false, length = 50)),
            @AttributeOverride(name = "groupName", column = @Column(name = "GROUP_NAME", nullable = false, length = 20)) })
    public RcUserXGroupId getId() {
        return this.id;
    }

    public void setId(RcUserXGroupId id) {
        this.id = id;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "RC_CUST_ID", nullable = false, insertable = false, updatable = false)
    public RcCustRespUser getRcCustRespUser() {
        return this.rcCustRespUser;
    }

    public void setRcCustRespUser(RcCustRespUser rcCustRespUser) {
        this.rcCustRespUser = rcCustRespUser;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((id == null) ? 0 : id.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        RcUserXGroup other = (RcUserXGroup) obj;
        if (id == null) {
            if (other.id != null)
                return false;
        } else if (!id.equals(other.id))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "RcUserXGroup [id=" + id + ", rcCustRespUser=" + rcCustRespUser
                + "]";
    }



}




/**
 * RcUserXGroupId generated by hbm2java
 */
@Embeddable
public class RcUserXGroupId implements java.io.Serializable {

    private long rcCustRespUserName;
    private String groupName;

    public RcUserXGroupId() {
    }

    public RcUserXGroupId(long rcCustRespUserName, String groupName) {
        this.rcCustRespUserName = rcCustRespUserName;
        this.groupName = groupName;
    }

    @Column(name = "RC_CUST_ID", nullable = false)
    public long getRcCustRespUserName() {
        return this.rcCustRespUserName;
    }

    public void setRcCustRespUserName(long rcCustRespUserName) {
        this.rcCustRespUserName = rcCustRespUserName;
    }

    @Column(name = "GROUP_NAME", nullable = false, length = 20)
    public String getGroupName() {
        return this.groupName;
    }

    public void setGroupName(String groupName) {
        this.groupName = groupName;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((groupName == null) ? 0 : groupName.hashCode());
        result = prime * result
                + (int) (rcCustRespUserName ^ (rcCustRespUserName >>> 32));
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        RcUserXGroupId other = (RcUserXGroupId) obj;
        if (groupName == null) {
            if (other.groupName != null)
                return false;
        } else if (!groupName.equals(other.groupName))
            return false;
        if (rcCustRespUserName != other.rcCustRespUserName)
            return false;
        return true;
    }


}
在RC_CUST_RESP_USER表中,我有主键rcCustId,而RcUserXGroup和RcUserXCompany有外键指向RC_CUST_RESP_USER.rcCustId

服务类::服务类调用helper来生成模型,模型被传递到dao层

@Service("userManagementService")
@Transactional
public class UserManagementServiceImpl implements UserManagementService {

    private static Logger logger = LogManager.getLogger(UserManagementServiceImpl.class);

    @Autowired
    private RcCustRespUserDao rcCustRespUserDao;

    @Autowired
    private UserManagementServiceHelper userManagementServiceHelper;

    @Override
    public boolean createUser(User userDto) throws RCException {
        RcCustRespUser rcCustRespUser = userManagementServiceHelper.getUserModelFromDto(userDto);
        rcCustRespUserDao.saveOrUpdate(rcCustRespUser);
        return true;
    }

}
从服务调用此ServiceHelper::Helper类以将dto转换为模型

@Component("userManagementServiceHelper")
public class UserManagementServiceHelper {

    public RcCustRespUser getUserModelFromDto(User userDto)
    {
        RcCustRespUser rcCustRespUser=new RcCustRespUser();
        Set<RcUserXGroup> rcUserXGroups = new HashSet<RcUserXGroup>();
        List<String> groupList= userDto.getGroupList();

        rcCustRespUser.setEmail(userDto.getEmail());

        rcCustRespUser.setFax(userDto.getFax());

        rcCustRespUser.setName(userDto.getName());

        rcCustRespUser.setOffice(userDto.getOffice());

        rcCustRespUser.setPhone(userDto.getPhone());


        for(String group:groupList)
        {
            System.out.println("Groups::"+group);           
            System.out.println("userDto.getName()::"+userDto.getName());
            RcUserXGroupId id = new RcUserXGroupId();
            id.setGroupName(group);
            RcUserXGroup rcUserXGroup=new RcUserXGroup();
            rcUserXGroup.setId(id);
            //rcUserXGroup.setRcCustRespUser(rcCustRespUser);
            rcUserXGroups.add(rcUserXGroup);
        }

        Set<RcUserXCompany> rcUserXCompanies = new HashSet<RcUserXCompany>();
        List<String> companyList= userDto.getCompanyList();
            for(String company:companyList)
            {
                System.out.println("Groups::"+company);
                RcUserXCompanyId id=new RcUserXCompanyId();
                id.setRespcompname(company);
                RcUserXCompany rcUserXCompany=new RcUserXCompany();
                rcUserXCompany.setId(id);
                //rcUserXCompany.setRcCustRespUser(rcCustRespUser);
                rcUserXCompanies.add(rcUserXCompany);
            }

        rcCustRespUser.setRcUserXGroups(rcUserXGroups);

        rcCustRespUser.setRcUserXCompanies(rcUserXCompanies);

        return rcCustRespUser;
    }

}
@组件(“userManagementServiceHelper”)
公共类UserManagementServiceHelper{
public rcustrespuser getUserModelFromDto(User userDto)
{
RcCustRespUser RcCustRespUser=新的RcCustRespUser();
Set rcUserXGroups=new HashSet();
List groupList=userDto.getGroupList();
rccustrepsuser.setEmail(userDto.getEmail());
rccustrepsuser.setFax(userDto.getFax());
rccustrepsuser.setName(userDto.getName());
rccustrepsuser.setOffice(userDto.getOffice());
rccustrepsuser.setPhone(userDto.getPhone());
对于(字符串组:groupList)
{
System.out.println(“组::”+group);
System.out.println(“userDto.getName()::”+userDto.getName());
RcUserXGroupId=新的RcUserXGroupId();
id.setGroupName(组);
RcUserXGroup RcUserXGroup=新的RcUserXGroup();
rcUserXGroup.setId(id);
//rcUserXGroup.setRcCustRespUser(rcCustRespUser);
添加(rcUserXGroup);
}
Set rcUserXCompanies=new HashSet();
List companyList=userDto.getCompanyList();
for(字符串公司:companyList)
{
System.out.println(“组::”+公司);
RcUserXCompanyId=新的RcUserXCompanyId();
id.setRespcompname(公司);
RcUserXCompany RcUserXCompany=新的RcUserXCompany();
rcUserXCompany.setId(id);
//rcUserXCompany.setRcCustRespUser(rcCustRespUser);
rcUserXCompanies.add(rcUserXCompany);
}
rccustrepsuser.setRcUserXGroups(rcUserXGroups);
rccustrepsuser.setRcUserXCompanies(rcUserXCompanies);
返回用户;
}
}
DAO::这是DAO类,用于保存模型

@Repository("rcCustRespUserDao")
public class RcCustRespUserDaoImpl extends AbstractDao<String,RcCustRespUser> implements RcCustRespUserDao{

    private static Logger log = LogManager.getLogger(RcCustRespUserDaoImpl.class);

    public void saveOrUpdate(RcCustRespUser instance) throws RCException {
        log.debug("attaching dirty RcCustRespUser instance");
        try {
            getSession().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw new RCException("CustomerRespUser saveOrUpdate operation failed");
        }
    }
}
@Repository(“rcCustRespUserDao”)
公共类RcCustRespUserDaoImpl扩展了AbstractDao,实现了RcCustRespUserDao{
私有静态记录器log=LogManager.getLogger(rccustrepsuserdaoimpl.class);
public void saveOrUpdate(rccustrepsuser实例)引发RCException{
debug(“附加脏rccustrepsuser实例”);
试一试{
getSession().saveOrUpdate(实例);
log.debug(“连接成功”);
}捕获(运行时异常re){
日志错误(“连接失败”,重新连接);
抛出新RCException(“CustomerRespUser保存或更新操作失败”);
}
}
}

在我看来,不应该对这些陈述进行评论。这将建立对象之间的关系。你能试着取消注释吗?***//rcUserXGroup.setRcCustRespUser(rcCustRespUser);和***//rcUserXCompany.setrcustrespuser(rccustrepuser);谢谢,这段代码被意外地注释了,不管怎样,问题出在数据库映射的末尾。现在已经解决了,工作正常。在我看来,这些声明不应该被评论。这将建立对象之间的关系。你能试着取消注释吗?***//rcUserXGroup.setRcCustRespUser(rcCustRespUser);和***//rcUserXCompany.setrcustrespuser(rccustrepuser);谢谢,这段代码被意外地注释了,不管怎样,问题出在数据库映射的末尾。现在已经解决了,工作正常。
@Repository("rcCustRespUserDao")
public class RcCustRespUserDaoImpl extends AbstractDao<String,RcCustRespUser> implements RcCustRespUserDao{

    private static Logger log = LogManager.getLogger(RcCustRespUserDaoImpl.class);

    public void saveOrUpdate(RcCustRespUser instance) throws RCException {
        log.debug("attaching dirty RcCustRespUser instance");
        try {
            getSession().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw new RCException("CustomerRespUser saveOrUpdate operation failed");
        }
    }
}