dao.getHibernateSession().createQuery(hql).setParameter("bookid", bookid).setParameter("batch", batch).executeUpdate();
(1)String hql="delete from TbProduceplanaccount ppa where ppa.tbBusinessplanaccount.batch=:batch and ppa.tbProduceplanbook.id=:bookid ";
異常:
總結: hibernate的理解方式與人不同,不能自動生成子查詢;更新或刪除操作是不允許聯表的,必須通過子查詢找出數據.
題外語:級聯刪除是要設置映射的.
(1)String hql="delete from TbProduceplanaccount ppa where ppa.tbBusinessplanaccount.batch=:batch and ppa.tbProduceplanbook.id=:bookid ";
異常:
Hibernate: delete from Tb_ProducePlanAccount, Tb_BusinessplanAccount tbbusiness1_ where batch=? and ProducePlanBook_ID=?
2011-11-17 11:50:16,166 WARN [JDBCExceptionReporter] SQL Error: 933, SQLState: 42000
2011-11-17 11:50:16,166 ERROR [JDBCExceptionReporter] ORA-00933: SQL 命令未正確結束
(2)hql="delete from TbProduceplanaccount ppa where ppa in (from TbProduceplanaccount ppa where ppa.tbBusinessplanaccount.batch=:batch and ppa.tbProduceplanbook.id=:bookid)";
2011-11-17 11:50:16,166 WARN [JDBCExceptionReporter] SQL Error: 933, SQLState: 42000
2011-11-17 11:50:16,166 ERROR [JDBCExceptionReporter] ORA-00933: SQL 命令未正確結束
(2)hql="delete from TbProduceplanaccount ppa where ppa in (from TbProduceplanaccount ppa where ppa.tbBusinessplanaccount.batch=:batch and ppa.tbProduceplanbook.id=:bookid)";
執行正常.
總結: hibernate的理解方式與人不同,不能自動生成子查詢;更新或刪除操作是不允許聯表的,必須通過子查詢找出數據.
題外語:級聯刪除是要設置映射的.