2005-9-5 9:51:49 net.sf.hibernate.impl.SessionImpl execute
严重: Could not synchronize database state with session
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)
at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:25)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:688)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java: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 net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.km.service.impl.UserImpl.updateOrSaveUser(UserImpl.java:92)
at com.km.service.run.Test.insert(Test.java:41)
at com.km.service.run.Test.main(Test.java:111)
严重: Could not synchronize database state with session
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)
at net.sf.hibernate.impl.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:25)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:688)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java: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 net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.km.service.impl.UserImpl.updateOrSaveUser(UserImpl.java:92)
at com.km.service.run.Test.insert(Test.java:41)
at com.km.service.run.Test.main(Test.java:111)
net.sf.hibernate.HibernateException: SQL insert, update or delete failed (row not found)你在配置文件中,加了关联关系,那么你有没有把对应的属性加到pojo里边呢!Public class User{
.......
Private Grade grade; //既然关联关系中,有这个属性,那么pojo中,也应该有这个属性。
........ //还必须有这个属性对应的get和set方法。}-------------------------------
你这个是一个双向的 1:n 关系,在grade的pojo里也得加上User属性。
其中Grade是用了个复合主键。
User.javapublic class User implements Serializable{ private String userID;
private String userName;
private int age;
private boolean sex;
private String address;
private String memo;
private Set gradeList = new HashSet();
Grade.java
public class Grade implements Serializable { private String userID;
private String courseID; private int source;
private User user;
我修改保存现有的user对象,并为user新加几个grade关联对象。生成的sql总是 Hibernate: update _grade_ set grade_courseID=?, grade_source=? where id=?
数据库中没有与之对应的数据应该是insert啊。。为什么老是update呢???
如何解决这个问题啊
不为空用session.update(grade); //UPDATE
为空用session.save(grade); //insert
而且,既然你用了inverse="true",你就应该只针对Grade操作,user.add(grade);grade.setUser(user);然后session.save(grade)就可以了。
不要去session.save(user)。
我现在已经改成了单一主键,对于复合主键还是不是很清楚,如果有哪位朋友知道的话,请发表一下自己的看法
现在又出了个问题,级联插入的时候插入一条数据时没有问题,但插入多条的时候报了个异常:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
还请各位赐教!在此谢过!!