java - Hibernate - 在 Linux 和 Windows 上的不同行为

标签 java windows linux hibernate hql

我遇到了一个特殊的问题,即 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

关于我应该在哪里解决这个问题有什么建议吗?

谢谢!

最佳答案

  1. 在 SQL 命令行工具中,一次输入一个 SQL 短语,然后查看 Linux 版本何时出错。为获得最佳效果,请在 Windows 上执行相同的操作。
  2. 确保生成的 SQL 在 Windows 和 Linux 上是相同的。
  3. 并且您确定他们指的是完全相同的数据库,并且使用相同的登录名? (编辑 - 我重新阅读并看到我有相同的数据 - 你是 Suuuuuure 吗?)
  4. 最后,我看到了:和 ro.organization.id=2 您确定两个系统上的 ID 都是 2 吗?您可能会因为序列号/自动 key ID 的不同而感到兴奋。

关于java - Hibernate - 在 Linux 和 Windows 上的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3910990/

相关文章:

java - 如何在 GridView 中添加切换按钮?

c - 如何与 NT 安装管理器交互以分配驱动器号?

linux - 虚拟地址到物理地址的映射

linux - 为什么我在 Linux 中使用带有 GFP_DMA 的 kmalloc 时得到高地址?

java - javafx中的路径拖动

java - 在一个巨大的列表中查找一个元素

Java,第二 Material 交互不起作用?

c - system()函数打开一个窗口

c++ - 从 C++ 中的二进制路径(命令行语句)获取进程 ID

linux - 用 bash 编写脚本解释器