Hibernate - разное поведение в Linux и Windows - PullRequest
1 голос
/ 12 октября 2010

Я столкнулся с особой проблемой, когда 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))))

Объяснение: Я извлекаю ресурсы из базы данных, где они активны, опубликованы и либо общедоступны, либо совместно используются с организацией, так что совместное использование данных выполняется вечно или между двумя датами.

У меня одни и те же данные в обеих базах данных (экспортированные из Linux и импортированные в Windows). На окнах я получаю Размер результата = 275

а в линуксе я получаю Размер результата = 0

Я просмотрел данные в Linux и понял, что должен получить ненулевой размер результата.

Windows имеет Java 1.5, тогда как Linux имеет Java 1.6

Любые предложения о том, где я должен искать, чтобы решить эту проблему?

Спасибо!

1 Ответ

1 голос
/ 12 октября 2010
  1. В инструменте командной строки SQL введите SQL по одной фразе за раз и посмотрите, когда версия для Linux не работает.Для достижения наилучших результатов сделайте то же самое в Windows.
  2. Убедитесь, что сгенерированный SQL одинаков для Windows и Linux.
  3. , и вы уверены, что они ссылаются на одну и ту же базу данных,и используя тот же логин?(редактировать - я перечитал и увидел У меня есть те же данные - Вы Suuuuuure?)
  4. и наконец я вижу это: и ro.organization.id = 2 Вы уверены, что идентификатор равен 2 в обеих системах?Вы можете загореться тем, что порядковые номера / идентификаторы автоключей отличаются.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...