在我的项目中,有一个User类和一个Group类,两者的关系式1-N,user.hbm.xml配置文件中的many-to-one内容如下:<many-to-one name="group" 
 class="com.whir.model.Group"
 column="groupid"
 insert="true"
 update="true"
 cascade="none"
 outer-join="auto"
/>
group.hbm.xml中one-to-many内容如下: 
                          <set name="users" 
 schema="ezoffice"
 lazy="true"
 inverse="true"
 table="t_user"
 cascade="all"
 sort="unsorted">
<key column="groupid"></key>
<one-to-many class="com.whir.model.User"/>
     </set>
然后我在函数中保存group,在保存group的时候也想把user的一个对象保存到数据库中:函数代码如下:
                 DB db = new DB();
User u1 = new User();
u1.setUsername("default_u1");
u1.setPassword("default_u1pwd");
u1.setAge(23);
u1.setPhone("sdfsd");
u1.setSex("男");
u1.setRegisterdate(new Date(System.currentTimeMillis()));

Group group = new Group();
group.setGroupname("default_groupname");
group.setGroupdesc("default_groupdesc");
group.getUsers().add(u1);
u1.setGroup(group);
db.save(group);在运行的时候group能保存,但是u1没有保存,报错内容如下:[20/03/13 03:13:32:032 CST] ERROR impl.SessionImpl: Could not synchronize databa
se state with session
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row no
t found)
        at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatche
r.java:25)
        at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.jav
a:688)
        at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.jav
a:641)
        at net.sf.hibernate.impl.ScheduledUpdate.execute(ScheduledUpdate.java:52
)
        at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2382)
        at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2336)
        at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2204)
        at com.whir.util.DB.save(DB.java:16)
        at com.whir.action.GroupAction.adddefault_group_user(GroupAction.java:13
3)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchActio
n.java:280)
        at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:
216)
        at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:484)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:274)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:148
2)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:292)
        at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:56)
        at com.whir.common.util.SetCharacterEncodingFilter.doFilter(SetCharacter
EncodingFilter.java:100)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:56)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:3592)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
ervletContext.java:2202)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
ontext.java:2108)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1432)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row no
t found)
        at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatche
r.java:25)
        at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.jav
a:688)
        at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.jav
a:641)
        at net.sf.hibernate.impl.ScheduledUpdate.execute(ScheduledUpdate.java:52
)
        at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2382)
        at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2336)
        at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2204)
        at com.whir.util.DB.save(DB.java:16)
        at com.whir.action.GroupAction.adddefault_group_user(GroupAction.java:13
3)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchActio
n.java:280)
        at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:
216)
        at org.apache.struts.action.RequestProcessor.processActionPerform(Reques
tProcessor.java:484)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.ja
va:274)
      设置级联了为什么不能保存,本人菜鸟,求解。hibernate  级联 

解决方案 »

  1.   

    hbm文件配置贴出来看看
    还有xml能用代码编辑器么?
      

  2.   

    开始就是all,最后不行我就改为none了
      

  3.   

     <set name="users" 
     schema="ezoffice"
     lazy="true"
     inverse="true"
     table="t_user"
     cascade="all"
     sort="unsorted"
     inverse="true">
    <key column="groupid"></key>
    <one-to-many class="com.whir.model.User"/>
         </set>
    加上红色部分试试