谁能帮我处理@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 message = (InteractionMessage) session.get(InteractionMessage.class, id);
我面对我既不能得到也不能得到receiver
,transmitter
因为Method 抛出了 'org.hibernate.LazyInitializationException' 异常。无法评估... Vacancy_$$_javassist_49.toString()。(空缺班正在实施InteractionParticipate
。)
我试着玩,@LazyToOne
甚至@LazyCollection
失败了。
请帮我弄清楚。提前致谢!