无法在H2数据库中使用联接

问题描述 投票:0回答:1

在使用H2(1.3.168)作为本地数据库时,通过Java Hibernate执行某些查询时遇到了一个奇怪的问题。似乎Hibernate尝试执行一系列SELECT语句,但其中一个失败并出现模糊错误。

日志文件报告一些成功执行的SELECT语句只有一个参与表,例如SELECT ... FROM T1 WHERE ...;

但是,当它在语句中获得简单的LEFT OUTER JOIN语句时,会产生以下错误:

General error: "java.lang.NoClassDefFoundError: org/h2/table/TableFilter$2" [50000-168]

我采用了Hibernate报告的完全相同的查询,并尝试直接在H2控制台中执行它。同样的错误。

我用简单的JOIN替换了LEFT OUTER JOIN,同样的错误。我从JOIN中删除了第二个表,只从第一个表中选择SELECT,它就是SELECT。对于第二个表本身是否相同,没有问题,例如

SELECT * FROM T1;

尝试连接其他表的一堆...错误再次出现。

SELECT * FROM T1 t1 JOIN T2 t2 ON t1.pk_id = t2.fk_id;

有谁知道H2的问题是什么?

java hibernate join h2 in-memory-database
1个回答
0
投票

当应用程序在开始执行时(与Hibernate / Spring无关),问题在于drop-recreate脚本中缺少的一个序列对象。在H2中单独编写脚本,并将其与另一组创建/删除语句进行比较,以找出后者的工作,但不能找到前者。

很奇怪H2完全因此而崩溃,并且不会让JOIN中的语句被执行而没有JOIN的简单查询工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.