今天把孫MM的<<精通Hibernate>>里第五章的代碼跑了一遍,有一個(gè)方法怎么也過(guò)不去:
? 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();
??? }
? }
總報(bào)錯(cuò):
org.hibernate.MappingException: Unknown entity: java.lang.String
就是
?session.delete("from " +className);
這一句出錯(cuò)了.真是神奇,這么簡(jiǎn)單一段竟然過(guò)不去,立馬寫(xiě)了一個(gè)測(cè)試,就是先Load一個(gè)NativeTester對(duì)象,然后再delete,成功了.......save一個(gè)NativeTester對(duì)象,也成功........這表示可以找到NativeTester.但是為什么說(shuō)Unknown entity: java.lang.String 呢?
郁悶了一個(gè)下午以后,晚上開(kāi)始google,終于讓我解決了,原來(lái)孫MM寫(xiě)書(shū)的時(shí)候用的是2.0,現(xiàn)在我用的是3.0,批量刪除的方法也已經(jīng)改了,現(xiàn)在是:
String hqlDelete = "delete NativeTester";?
int deletedEntities = session.createQuery( hqlDelete )?
.executeUpdate();
終于解決了!!!!
補(bǔ)充一下,我的開(kāi)發(fā)環(huán)境:
Eclipse 3.1.2+Myeclipse 4.1.1+Tomcat 5.0.28+Mysql 5.0.16