在使用H2 (1.3.168)作为本地数据库时,通过Java Hibernate执行某些查询时,我遇到了一个奇怪的问题。看起来Hibernate试图执行一系列SELECT语句,但其中一条失败了,并显示了一个模糊的错误。
日志文件报告说,少数成功执行的SELECT语句只有一个参与表,例如SELECT ...来自T1的地方...;
但是,当它到达语句中的一个简单的LEFT OUTER JOIN语句时,会产生以下错误:
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的问题出在哪里吗?
发布于 2019-02-28 12:55:14
当应用程序在启动时执行时,问题出在drop-recreate脚本中缺少的序列对象之一(与Hibernate/Spring无关)。在H2中单独运行脚本,并将其与另一组create/drop语句进行比较,以发现后者可以工作,但前者不行。
非常奇怪的是,由于这个原因,H2完全崩溃了,并且不允许包含JOIN的语句被执行,而没有JOIN的简单查询可以正常工作。
https://stackoverflow.com/questions/54877987
复制相似问题