我遇到了一个特殊的问题,即 hql 查询在 Windows 上按预期工作,但在 Linux 上却没有。
这里是查询:
select distinct resource from Resource resource , ResourceOrganization ro
where (resource.active=true) and (resource.published=true) and
((resource.resourcePublic=true) or ((ro.resource.id=resource.id and
ro.organization.id=2) and ((ro.resource.id=resource.id and ro.forever=true) or
(ro.resource.id=resource.id and current_date between ro.startDate and ro.endDate))))
说明:我正在从数据库中获取资源,这些资源是 Activity 的、已发布的、公开的或与组织共享的,这样共享要么是永久的,要么是在 2 个日期之间。
我在两个数据库中都有相同的数据(从 Linux 导出并在 Windows 中导入)。 在 window 上我得到 结果大小 = 275
在 Linux 中我得到 结果大小 = 0
我查看了 Linux 中的数据,发现我应该得到非零结果大小。
Windows 有 Java 1.5 而 Linux 有 Java 1.6
关于我应该在哪里解决这个问题有什么建议吗?
谢谢!
最佳答案
- 在 SQL 命令行工具中,一次输入一个 SQL 短语,然后查看 Linux 版本何时出错。为获得最佳效果,请在 Windows 上执行相同的操作。
- 确保生成的 SQL 在 Windows 和 Linux 上是相同的。
- 并且您确定他们指的是完全相同的数据库,并且使用相同的登录名? (编辑 - 我重新阅读并看到我有相同的数据 - 你是 Suuuuuure 吗?)
- 最后,我看到了:和 ro.organization.id=2 您确定两个系统上的 ID 都是 2 吗?您可能会因为序列号/自动 key ID 的不同而感到兴奋。
关于java - Hibernate - 在 Linux 和 Windows 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3910990/