2010-10-12 5 views
1

J'ai rencontré un problème particulier où une requête hql fonctionne comme prévu sous Windows mais pas sous Linux.Hibernate - comportement différent sous Linux et Windows

Voici la requête:

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)))) 

Explication: Je suis aller chercher des ressources de base de données où ils sont actifs, publiés et publics ou partagés avec une organisation telle que le partage est soit toujours ou entre 2 dates .

J'ai les mêmes données dans les deux bases de données (exportées de Linux et importées dans Windows). Sur les fenêtres je reçois Taille Résultat = 275

et Linux je reçois Taille Résultat = 0

J'ai regardé les données sous Linux et je vois que je devrais obtenir la taille de résultat non nul.

Windows a Java 1.5 alors que Linux a Java 1.6

Toutes les suggestions sur où je devrais chercher à résoudre ce problème?

Merci!

Répondre

1
  1. Dans un outil de ligne de commande SQL, entrez la phrase SQL une à la fois et vérifiez que la version Linux ne fonctionne pas correctement. Pour de meilleurs résultats, faites la même chose sur Windows.
  2. Assurez-vous que le SQL généré est le même sur Windows et Linux.
  3. et vous êtes sûr qu'ils se réfèrent exactement à la même base de données, et en utilisant le même login? (Edit - Je Relisez et a vu j'ai les mêmes données - êtes-vous Suuuuuure?)
  4. et enfin, je vois ceci: et ro.organization.id = 2 Êtes-vous que l'ID est 2 sur les deux systèmes? Vous pourriez être éclairé par les numéros de séquence/identifiants autokey étant différents.
+0

Êtes-vous Suuuuuuure? _ Rocket Ray Pilch est un ingénieur chimiste. Un très intelligent. J'ai soutenu le simulateur qu'il a utilisé. Quand nous avions un problème, c'est ce que Ray me disait quand je jetais un «fait» sur mon code et que ça ne cadrait pas avec ses observations. Malheur à la personne qui l'a ignoré et qui a eu tort! Quelque 20 ans plus tard, j'entends encore cette voix dans ma tête lorsque je fais une supposition incontrôlée. –

+0

Tony, merci pour les suggestions ... cela m'a aidé à approfondir l'enquête. Maintenant, le problème s'est réduit au SQL généré. Malheureusement, la limitation de caractères dans cette boîte de commentaire m'empêche d'inclure l'instruction SQL et d'expliquer plus en détail le problème qui devient de plus en plus intéressant! –

+0

Vous pouvez probablement le coller dans votre question d'origine. –