2016-07-27 57 views
0

我正在使用JAXB和JPA創建存儲/提供體育比賽結果的Web服務。 JAXB用於解組傳入的XML文件,然後使用JPA將結果存儲在數據庫中。在一個XML文件中,引用用於維護引用完整性,確保一個競爭者僅存儲在數據庫中一次(所有相關引用都指向其在數據庫中的一條記錄)。這一切都可以正常工作,但是如果我再提交另一個XML文檔,其中包含一些競爭對手出現在第一個XML文檔中,則會向數據庫添加一個附加(除自動生成的ID以外)條目,而我希望對由於第一個XML文檔而創建的原始條目進行引用。對於我目前的實施來說,'重複競爭者'是由重複的姓氏,名字和國籍來定義的 - 我意識到這可能會導致不正確的關聯(例如,對於稱爲來自英國的約翰史密斯的競爭者),但我可以與那些目前。JAXB和JPA - 引用數據庫中同一對象的兩個XML文檔

我希望有人指出正確的方向來解決這個問題!

回答

0

據我所知,你有JAXB解組的Java對象具有重複的值,因此有重複的查詢由JPA觸發。

這裏有幾個解決方案: 1.在DAO層中有一個JPA特定的對象圖並複製JAXB生成的Java對象值給它。這將是更簡潔的設計,JPA和JAXB都可以在您的項目中進行更改而無需更改其他項目。 2.使用JAXB中的重複刪除選項,如將所有傳入的XML生成爲單個包,並避免警告。

0

解決我自己的問題 - 只是需要多等幾天吧......

在這種持續對象到數據庫的功能,我現在在做一個查詢,看看是否有在現有對象該數據庫與我們將要保留的競爭對手的名字,姓氏和國籍相匹配,如果是這樣,它將用數據庫中已有的對象替換新對象,從而避免重複。

相關問題