我在使用H2(1.3.168)作为本地数据库时通过Java Hibernate执行某些查询时遇到了一个奇怪的问题。似乎冬眠试图执行一系列选择的语句,但一个错误的错误失败了。
日志文件报告说,一些确实成功执行的选择语句只有一个参与表,例如从t1中选择...;
但是,当它到达语句中的简单左外联机语句时,它会产生以下错误:
General error: "java.lang.NoClassDefFoundError: org/h2/table/TableFilter$2" [50000-168]
我采用了Hibernate报告的完全相同的查询,并试图直接在H2控制台中执行它。同样的错误。
我用简单的联接替换了左外连接,同样的错误。我从联接中删除了第二个表,只从第一张表中选择,它就可以很好地选择。对于第二个表,也没有问题,没有问题,例如
SELECT * FROM T1;
尝试了一些其他与联接的表...错误再次出现。
SELECT * FROM T1 t1 JOIN T2 t2 ON t1.pk_id = t2.fk_id;
有人知道H2的问题是什么?
当应用程序在开始时执行应用程序时,问题是drop-recreate脚本中的一个丢失的序列对象(与Hibernate/Spring无关)。在H2中分别运行脚本,并将其与另一组创建/删除语句进行了比较,以找出后者有效,但不从前。
H2由于此而完全崩溃,并且不允许使用JOIN
的陈述在没有JOIN
的简单查询时被执行。