2010-10-12 40 views
1

我遇到了一个特殊的问题,其中一个hql查询在Windows上按预期工作,但不在Linux上。休眠 - 在Linux和Windows上的不同行为

下面是该查询:

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中导入)中都具有相同的数据。 在Windows上,我得到 结果大小= 275

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

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

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

我应该怎样寻找到解决这个问题有什么建议?

谢谢!

回答

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

_你是Suuuuuuure?_ Rocket Ray Pilch是一位化学工程师。一个非常聪明的人。我支持他使用的模拟器。当我们遇到问题时,Ray就会对我说,当我吐出关于我的代码的一些“事实”时,他会对我说,而且没有听到他的观察。对忽视他并且错误的人有祸!大约20年后,当我做出一个不受控制的假设时,我仍然听到了这种声音。 – 2010-10-12 01:47:05

+0

托尼,感谢您的建议......它帮助我进一步调查。 现在问题已经缩小到生成的SQL。不幸的是,这个评论框中的字符限制阻止了我包含SQL语句,并进一步解释了越来越有趣的问题! – 2010-10-12 15:49:38

+0

你可以将它粘贴在原来的问题中。 – 2010-10-12 18:06:36