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");
}
}
}