gpt4 book ai didi

java - 为什么 Hibernate 将架构名称添加到 Hsql 函数中?

转载 作者:行者123 更新时间:2023-11-30 02:54:47 26 4
gpt4 key购买 nike

我们有一个使用 Hibernate 3.0.3 的旧版应用程序。我们使用 HSQLDB 进行单元测试。 Hibernate 生成的查询之一如下所示:

select
transactio0_.REASON_ID as REASON1_0_,
transactio0_.DESCRIPTION as DESCRIPT2_93_0_,
transactio0_.REASON_NAME as REASON3_93_0_
from APPS.MTL_TRANSACTION_REASONS transactio0_
where transactio0_.REASON_ID=54
and transactio0_.NVL (transactio0_.disable_date, NOW() + 1 DAY) > NOW()

请注意,架构名称“transactio0_”已添加到 NVL 函数之前。为什么?我们如何配置 Hibernate 才能避免这种情况发生?

下一个问题涉及我们正在使用的 HSQLDB 版本。我们当前使用 HSQLDB 2.2.8,并希望升级到 HSQLDB 2.3.2。上述查询在 HSQLDB 2.2.8 中工作正常,但在 HSQLDB 2.3.2 中失败,并出现“无效架构名称”错误。有什么方法可以配置 HSQLDB 2.3.2,使其能够像 HSQLDB 2.2.8 一样成功执行查询吗?

最佳答案

生成的 SQL 看起来很奇怪,而且肯定是不正确的 SQL。 transactio0_ 是表别名,不应添加到任何函数名称前面。

也许所选的 Hibernate 方言不是 HSQLDB 方言。

无论如何,这是一个旧版本的 Hibernate,需要与更接近其发布时间的 HSQLDB 版本一起使用。

关于配置 HSQLDB 以接受格式错误的名称,这应该是不可能的,因为原始行为已修复,因为它太宽松并且接受了不正确的 SQL。

关于java - 为什么 Hibernate 将架构名称添加到 Hsql 函数中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37580077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com