User と Topic の間には非常に単純な @ManyToMany 関係があります。
@ManyToMany(mappedBy = "users", fetch = FetchType.LAZY)
public Set<Topic> getTopics() {
return topics;
}
このコレクションを Iterator でトラバースすると、返されるすべての要素が Topic エンティティのプロキシになります。そのクラス名は Topic_javassist_4 です。しかし、私が知っているように、コレクションは具象型の要素 (私の場合は「トピック」) で初期化する必要があります。コレクションの「トピック」がプロキシで埋め尽くされているのはなぜですか?
更新これは不可能に思えますが、そうです! すでにアクティブなトランザクションで、「トピック」コレクションをトラバースし、すべてのトピック エンティティのクラス名を出力します。
package_name.Topic_$$_javassist_4
package_name.Topic
同じコレクションで最初のトピックが初期化されておらず、2 番目のトピックが初期化されているのはなぜですか?
ところで、hibernate ログは select ステートメントを選択してトピック エンティティを選択し、値はコンソールに出力されます。コレクションからの両方のトピックのすべての正しい値です。
ありがとうございました!