作者PsMonkey (痞子军团团长)
看板java
标题[虫?] Hibernate + HSQLDB 问题
时间Fri May 4 14:15:45 2012
有 link 的网志版:
http://blog.dontcareabout.us/2012/05/hibernate-hsqldb.html
测试环境:Hibernate 4.1.2、HSQLDB 2.2.8、Java 1.6
抓了两个 H 的最新版,结果前後炸了四五个小时才能开始塞资料。
兹纪录如下。
大抵上是参考 《Hibernate 学习笔记》 (中文嘛...... [殴飞]),
只不过 database 改成用 HSQLDB Server 版。
第一个遇到的问题是:只要一作 session.beginTransaction(),
Hibernate 就会炸
「No suitable driver found for jdbc:hsqldb:hsql://localhost/DBNAME」,
最後找到的解法是在建立 Configuration 之前
就先执行「Class.forName("org.hsqldb.jdbc.JDBCDriver")」。
(参考资料:Hibernate forum)
顺便补一下,似乎在 Hibernate 4 以後
Configuration.buildSessionFactory() 就被 deprecated 掉,
不过(到目前为止)使用起来还是正常。
至於标准写法我没研究,可参见 stackoverflow。
第二个遇到的问题是 session.save() 时 HSQLDB 会炸
「user lacks privilege or object not found」,
据说如果用 Hibernate 3.6 跟 HSQLDB 1.8 就不会有这种困扰...... Orz。
这篇提到要将 Hibernate 的 hibernate.hbm2ddl.auto 设定为 create,
不过实际测试之後得设定成 update,
第二次以後的 openSession() 後才能正常运作。
(参考资料:Hibernate reference)
重新 update:
→create:每次重开 Tomcat 就会 drop 掉 table 重建
→validate:要已经有 table 了才能正常运作
→update:没有 table 会建 table,不过在系统运作中不能有人 drop table
做了这些手脚之後,目前 save() 之後东西都会乖乖进资料库了。
於是又写一篇可能没多久之後就没意义的 debug / 教学文......
软体业阿...... [远目]
--
钱锺书:
说出来的话
http://www.psmonkey.org
比不上不说出来的话
Java 版 cookcomic 版
只影射着说不出来的话
and more......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.202.140
※ 编辑: PsMonkey 来自: 220.135.202.140 (05/04 16:21)
1F:→ lovdkkkk:每次 drop 掉重建那个, 看看设定档里有没有 drop 什麽的 05/04 18:30
2F:推 lovdkkkk:Drop and re-create the database schema on startup 05/04 18:37
4F:→ lovdkkkk:JBOSS 系列的相容性一向很有趣 05/04 18:43
5F:→ qrtt1:其实可以考虑改用 h2 啊QQ 05/05 00:07
6F:→ PsMonkey:案主指定 XDXD 05/05 12:41