2016-07-09 5 views
0

bereitgestellt wird Ich erstelle eine Java Web App, die auf Spring Framework, Tomcat, Hibernate (aber nur JPA API) läuft. Ich habe etwas Code geschrieben, der eine Verbindung zur Datenbank mit benannten Abfragen herstellt, die in xml-Dateien wie:Eine seltsame org.hibernate.DuplicateMappingException, die nur passiert, wenn meine Web App auf Tomcat auf CentOS

Diese Webanwendung funktioniert gut auf meinem lokalen Tomcat auf OS X. aber es funktioniert nicht auf CentOS-Maschine. wenn es auf CentOS, Initialisierung des Frühlings Kontext entfaltet wird nicht durch:

Caused by: org.hibernate.DuplicateMappingException: Duplicate query mapping ProductReview.getProductReviewNamedParameter 

Von meinem Wissen sollte DuplicateMappingException passieren, wenn die ProductReview.getProductReviewNamedParameter benannte Abfrage definiert ist, zwei oder mehrere Male. aber ich habe genau einmal definiert und diese App funktioniert gut auf meinem lokalen Rechner. Hat jemand ein ähnliches Problem wie ich erlebt? Irgendwelche Antworten, deine Erfahrungen oder Einsichten wären großartig!

Antwort

0

Du

classpath*:jpql-mapper/**/*.xml 

Classpath mit * durchsucht die ganze Classpath für alle Vorkommen dieses Dateimuster. Wenn Sie also versehentlich Ihre benannten Abfragen im Klassenpfad haben, würde dies die Ausnahme erklären.

So als ersten Schritt entfernen Sie die ‚*‘ nach Classpath, so dass es wie folgt aussieht:

classpath:jpql-mapper/**/*.xml 

Die Art und Weise der Classpath gebaut und auch die darin enthaltenen Gläser (tomcats besitzen Gläser, Versionen), sein kann anders in den beiden Umgebungen. Dies kann zu unterschiedlichem Verhalten führen, wie Sie erfahren haben.

+0

Sie haben mir gerade von der JAR-Datei erzählt, ich habe mir beide JAR-Dateien angeschaut, die .XML-Dateien auf OS X und CentOS enthalten. Die auf CentOS hat zwei .xml-Dateien mit demselben Namen, wenn sie 'jar tf' ausgeben. Danke für deine Einsicht. – inherithandle

Verwandte Themen