2016-07-09 18 views
0

我正在創建一個運行在Spring框架,Tomcat,Hibernate(但是隻有JPA API)上的java web應用程序。我寫了一些代碼連接到數據庫與命名查詢外部化爲XML文件,如:一個奇怪的org.hibernate.DuplicateMappingException,只有當我的web應用程序部署到CentOS上的tomcat時纔會發生

這個網絡應用程序正常工作在我的本地tomcat OS X上,但它不是在CentOS機器上工作。當它被部署在CentOS,Spring上下文的初始化失敗原因爲:

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

從我的知識,DuplicateMappingException當ProductReview.getProductReviewNamedParameter命名查詢是指兩個或兩個以上的時間應該發生。但我定義了一次,這個應用程序在我的本地機器上正常工作。有沒有人遇到像我這樣的類似問題?任何答案,你的經驗或見解都會很棒!

回答

0

您正在使用

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

的classpath *搜索此文件模式的所有出現的整個類路徑。所以如果你不小心在類路徑中有兩次命名查詢,這將解釋異常。

因此作爲第一步刪除「*」後的classpath,所以它看起來像:

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

類路徑的構建方式,也包含在罐子(雄貓自己的罐子,版本),可能是在兩種環境中不同。正如你所經歷的那樣,這可能會導致不同的行爲。

+0

你剛纔告訴我關於jar文件的問題,我查看了兩個包含OS X和CentOS上的.xml文件的jar文件。在發行'jar tf'時CentOS上的那個文件有兩個同名的.xml文件。感謝您的見解。 – inherithandle

相關問題