我正在尝试在可嵌入对象中使用elementCollection,但JPA2.0似乎忽略了它。
如果我进行调试,我会看到embeddable中的集合已填充,但它不会持久化,并且JPA不会引发任何异常。似乎由于某种我找不到的原因而忽略了它。
如果将那个elementCollection放置在基本实体(包含可嵌入对象)中,则该集合将被保存。
为什么是这样?我该如何改变?
代码示例:
@Entity
@Table(name = "PRELEVATION_SURVEY")
public class PrelevationSurvey extends Domain {
@Embedded
private GeneralPatientInformation generalPatientInformation;
}
@Embeddable
public class GeneralPatientInformation {
@ElementCollection(
fetch = FetchType.EAGER)
@CollectionTable(name = "CAUSES_OF_DEATH",
joinColumns = @JoinColumn(name = "SURVEY_ID"))
@Column(name = "CAUSE_OF_DEATH")
@Enumerated(EnumType.STRING)
private List<CauseOfDeath> causesOfDeath;
}
再说一次。如果我将它们放置在PrelevationSurvey上,则死亡原因仍然存在,但是如果我将它们放置在该遗留物中,则不会。
最佳答案
使用以下代码对其进行了修复:
public PrelevationSurvey save(PrelevationSurvey prelevationSurvey) {
PrelevationSurvey attachedPrelevationSurvey = super.save(prelevationSurvey);
attachedPrelevationSurvey.getGeneralPatientInformation().setCausesOfDeath(prelevationSurvey.getGeneralPatientInformation().getCausesOfDeath());
return attachedPrelevationSurvey;
}
保存方法调用“ entityManager.merge(entity)”。
我正在自己做集合的合并。
另请参见:https://hibernate.atlassian.net/browse/HHH-6143