今天把孫MM的<<精通Hibernate>>里第五章的代碼跑了一遍,有一個方法怎么也過不去:
? public void deleteAllObjects(String className) throws Exception{
??? // Ask for a session using the JDBC information we've configured
??? Session session = sessionFactory.openSession();
??? Transaction tx = null;
??? try {
????? tx = session.beginTransaction();
????? session.delete("from " +className);
????? // We're done; make our changes permanent
????? tx.commit();
??? }catch (Exception e) {
????? if (tx != null) {
??????? // Something went wrong; discard all partial changes
??????? tx.rollback();
????? }
????? throw e;
??? } finally {
????? // No matter what, close the session
????? session.close();
??? }
? }
總報錯:
org.hibernate.MappingException: Unknown entity: java.lang.String
就是
?session.delete("from " +className);
這一句出錯了.真是神奇,這么簡單一段竟然過不去,立馬寫了一個測試,就是先Load一個NativeTester對象,然后再delete,成功了.......save一個NativeTester對象,也成功........這表示可以找到NativeTester.但是為什么說Unknown entity: java.lang.String 呢?
郁悶了一個下午以后,晚上開始google,終于讓我解決了,原來孫MM寫書的時候用的是2.0,現在我用的是3.0,批量刪除的方法也已經改了,現在是:
String hqlDelete = "delete NativeTester";?
int deletedEntities = session.createQuery( hqlDelete )?
.executeUpdate();
終于解決了!!!!
補充一下,我的開發環境:
Eclipse 3.1.2+Myeclipse 4.1.1+Tomcat 5.0.28+Mysql 5.0.16