Hibernate - Linux和Windows上的不同行为

时间:2010-10-12 00:52:32

标签: 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))))

说明:我从数据库中获取资源,这些资源是活动的,已发布的,公开的或与组织共享的资源,以便共享永远或在2个日期之间。

我在两个数据库中都有相同的数据(从Linux导出并在Windows中导入)。 在窗户上,我得到 结果大小= 275

在Linux中我得到了 结果大小= 0

我查看了Linux中的数据,我发现我应该得到非零的结果大小。

Windows具有Java 1.5,而Linux具有Java 1.6

关于我应该在哪里解决这个问题的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:1)

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