J'ai ce problème étrange. Dans une webapp J2ee avec spring, smartgwt et hibernate, il se trouve que j'ai une classe A qui a un ensemble de classe B, les deux mappés à la table A et la table B.Hibernate ne pas enregistrer clé étrangère, mais avec junit c'est ok
J'ai écrit un cas de test simple pour tester le gestionnaire de service qui est censé faire insérer, mettre à jour, supprimer et tout fonctionne comme prévu notamment lors de l'insertion. À la fin, j'ai un enregistrement dans A et des enregistrements dans B avec la clé étrangère à A.
Mais lorsque j'essaie d'appeler le service depuis l'application Web, les entités de B sont enregistrées sans référence de clé étrangère.
Je suis sûr que le service est le même. Une chose que je remarque est que l'activation de l'enregistrement de mise en veille prolongée, semble que lorsque le service est appelé à partir de l'application, une plus mise à jour est faite:
- insérer une
- insert B
- mise à jour A
- mise à jour B
- mise à jour B (clé étrangère uniquement)
- mise à jour A < --- ???
- mise à jour B < --- ???
Au lieu de cela, lors de cas de test JUnit est exécuté, la mise à jour est la suivante:
- insérer un
- insert B
- mise à jour A
- mise à jour B
- mise à jour B (clé étrangère uniquement)
I Supposons que la dernière mise à jour soit la cause de l'erroe, peut-être qu'elle écrase des valeurs. Considérant que l'application utilise Spring, avec le mécanisme bien connu de DAO + Manager, où puis-je enquêter pour résoudre ce problème? Quelqu'un m'a dit que la session n'est pas fermée, donc Hibernate ferait une mise à jour de plus avant de libérer les objets par lui-même.
Je suis assez sûr que toute la configuration hbm, xml, et le reste sont bien ... mais je me trompe peut-être.