4

Collection を SortedSet に変更しています。これは、常に作成時と同じ一貫した順序にする必要があるためです。モデル プロパティを

@OneToMany(cascade = CascadeType.ALL, mappedBy = "contentId")
private Collection<Footnote> footnoteCollection;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "contentId")
private SortedSet<Footnote> footnoteSortedSet;

および関連するすべての関数を削除して、Netbeans がエラーを表示しないようにします。アプリを実行すると、次のエラーが表示されます。Exception Description: Could not load the field named [footnoteSortedSet] on the class [class com.mysite.cmt.model.Content_]. Ensure there is a corresponding field with that name defined on the class.

これを適切に変更してアプリを再起動したばかりなので、設定されていないと言っている理由を理解するのに苦労しています...

4

2 に答える 2

5

発生しているエラーは、JPA メタモデルから発生しているようです。何らかの方法でこれを生成していると思います。基準でメタモデルを使用しない場合、これは必要なく、エラーはなくなります。

問題は、JPA がコレクション インターフェイス、Map、List、Set、Collection のみを許可することです。そのため、新しいインスタンスで SortedSet を使用できますが、データベースから読み込まれたオブジェクトは特別な遅延 List 実装を使用します。

TopLinkでは、マッピングをEAGERとしてマークすると、SortedSetを使用できます。メタモデルのエラーは修正されたと思います。最新のリリースを試してください。

于 2012-04-11T13:55:47.367 に答える
0

SortedSet救助へのjavadoc:

ソートされたセットに挿入されるすべての要素は、 Comparable インターフェースを実装する (または指定されたコンパレーターによって受け入れられる) 必要があります。

ほぼ確実に、Footnote実装されていませんComparable

于 2012-04-10T16:56:09.877 に答える