誰かが@Any関係に対処する方法を教えてくれますか?
InteractionParticipate私は、ある種のメッセージング相互作用に参加したいすべての人が実装するインターフェースを持っています。InteractionMessageメッセージは、送信機と受信機を持つで表されます。InteractionParticipateどのエンティティ実装がメッセージの受信者 (または送信者) になるかわからないため、@Anyリレーションシップを使用する必要があります。
私はこれを読んでインスピレーションを得て、次のInteractionMessageように書きました。
@Any(metaColumn = @Column(name = "Transmitter_Type"))
@AnyMetaDef(
idType = "long",
metaType = "string",
metaValues = {
@MetaValue(value = "Applicant", targetEntity = Applicant.class),
@MetaValue(value = "Vacancy", targetEntity = Vacancy.class)
})
@JoinColumn(name = "Transmitter_Id")
@LazyToOne(LazyToOneOption.FALSE)
private InteractionParticipate transmitter;
@Any(metaColumn = @Column(name = "Receiver_Type"))
@AnyMetaDef(idType = "long", metaType = "string",
metaValues = {
@MetaValue(targetEntity = Applicant.class, value = "Applicant"),
@MetaValue(targetEntity = Vacancy.class, value = "Vacancy")
})
@JoinColumn(name = "Receiver_Id")
@LazyToOne(LazyToOneOption.FALSE)
private InteractionParticipate receiver;
データベースは適切に作成されており、エンティティが正しく保存されていることがわかります。InteractionMessageしかし、データベースから取得しようとすると
InteractionMessage メッセージ = (InteractionMessage) session.get(InteractionMessage.class, id);
メソッドが「org.hibernate.LazyInitializationException」例外をスローしたため、どちらreceiverも取得できないことに直面しています。評価できません... Vacancy_$$_javassist_49.toString()。(空席クラスは実施中です。)transmitterInteractionParticipate
@LazyToOne私はとでも遊んでみまし@LazyCollectionたが、失敗しました。
それを理解するのを手伝ってください。前もって感謝します!