引出这个bug的问题是因为有两种
1:(这种情况我还没遇到)
not-null property references a null
实体类not-null="false",而这时你又设置你的实体类为空了。
2:(这时我遇到的问题)
transient value
用了一个游离的值。
有问题的代码
public void deleteBook(Book book) {
Session session = null;
Transaction transaction = null;
try {
session = sessionFactory.getSession();//获取session
transaction = session.beginTransaction();
//manager.setManagerName("admin");
session.delete(book);
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
错误的原因是我传递进的book是个游离的值,session对象的关闭,让book成为了游离态
解决方案。。正确的做法
public void deleteBook(Book book) {
Session session = null;
Transaction transaction = null;
try {
session = sessionFactory.getSession();//获取session
transaction = session.beginTransaction();
//manager.setManagerName("admin");
session.delete(session.get(Book.class, book.getBookId()));
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
利用session获取book,然后再删除
====时间匆忙,写的很粗糙,望见谅======