誰かが@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()。(空席クラスは実施中です。)transmitter
InteractionParticipate
@LazyToOne
私はとでも遊んでみまし@LazyCollection
たが、失敗しました。
それを理解するのを手伝ってください。前もって感謝します!