我们使用 hibernate 实体管理器通过 JPA 映射我们的实体。我们使用 HSQLDB 内存数据库进行单元测试。一切都很好,直到最近对模型的重构开始导致以下错误:

17:55:48.516 [main] WARN  o.h.util.JDBCExceptionReporter - SQL Error: -22, SQLState: S0002
17:55:48.517 [main] ERROR o.h.util.JDBCExceptionReporter - Table not found in statement

我无法发布有问题的 SQL,但是任何人都可以给我指出上述错误的可能原因吗?特别是因为我知道代码之前可以工作。似乎 hibernate 由于重构而生成了无效的 sql?

有帮助吗?

解决方案

那么,桌子真的在那里吗?为 Hibernate 启用 SQL 输出并根据实际数据库架构检查它。

您的重构可能被搞砸了(实体和表被重命名;命名查询未更新)。

或者您可能在类路径中的某个位置有较旧的类,导致读取错误的注释。

其他提示

这也可能表示JDBC驱动器和休眠方言之间的失配。

我们得到了这个时候JDBC驱动程序连接是HSQLDB和Hibernate的方言是org.hibernate.dialect.Oracle10gDialect。

在相应的异常信息: [错误]:无法获取数据库的元数据 值java.sql.SQLException:在语句[选择从all_sequences SEQUENCE_NAME]未发现表

我有这个问题也是如此,在我来说,我有这样的事情在实体

@Column(名称= “AVAIL_TARGET_PERCENT”,columnDefinition = “号(5,2)”,可为空=假)

就避免columnDefinition(带它出去!),你应该罚款。我这样做,并且问题是固定

我们也得到同样的异常。原来,属性的 hibernate.dialect 设定为org.hibernate.dialect.Oracle10gDialect用H 2数据的基础上作为数据源。解决的方法是删除hibernate.dialect和不使用任何价值。冬眠有能力自动检测基于方言元数据从数据源配置检索到的结果,对于关于如何冬眠的更多信息自动检测方言的结果, https://docs.jboss.org/hibernate /orm/3.6/reference/en-US/html/portability.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top