2016-07-27 8 views
0

JAXBとJPAを使用して、スポーツ競技の結果を格納/提供するWebサービスを作成しています。 JAXBは、受信XMLファイルを非整列化するために使用され、その結果はJPAを使用してデータベースに格納されます。単一のXMLファイル内では、参照整合性を維持するために参照が使用され、単一の競合者がデータベースに1回だけ格納されます(DB内の1つのレコードを指し示す競合他社へのすべての参照)。しかし、これはうまくいきますが、最初のXML文書に存在するいくつかの競合他社を含む別のXML文書を提出すると、追加の(重複したIDが自動生成される)エントリがデータベースに作成されますが、最初のXML文書の結果として作成された元のエントリへの参照が行われます。私の現在の実装では、「重複する競合者」は重複した姓、名、国籍によって定義されています - これは誤った関連付け(例えば、競合他社の両方ともUKからJohn Smithと呼ばれます)今のところ。JAXBとJPA - データベース内の同じオブジェクトを参照する2つのXML文書

誰かがこれを解決する正しい方向に向いていることを感謝します。

答えて

0

私は、重複した値を持つJAXB非整列Javaオブジェクトを持っていることを理解しているので、JPAによって重複した問合せが発生しています。

ここにはいくつかの解決策があります。 1. DAOレイヤーにJPA固有のオブジェクトグラフを置き、JAXBによって生成されたJavaオブジェクト値をコピーします。これはよりクリーンなデザインとなり、JPAとJAXBは両方ともあなたのプロジェクトを変更せずに変更することができます。 2. JAXBで重複除去オプションを使用すると、入力XMLを単一パッケージに生成し、警告を回避できます。

0

は私自身の問題を修正しました - ちょうどデータベースにオブジェクトを永続化機能では...それで数日以上

を必要と、私は今の既存のオブジェクトがあるかどうかを確認するために、ルックアップをやっています私たちが永続しようとしている競合相手の名字、姓、国籍に合致するデータベースを作成し、そうであれば新しいオブジェクトを既にデータベースにあるものに置き換え、重複を避けます。

関連する問題