我试图在embeddable中使用elementCollection,但JPA2.0似乎忽略了它。
如果我进入调试,我会看到embeddable中的集合已被填充,但它没有被持久化,JPA也没有抛出任何异常。它似乎忽略了它,因为我无法找到它。
如果我将elementCollection放在基本实体(包含embeddable)中,则保存集合。
这是为什么?我怎么能改变它?
代码示例:
@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上,死亡的原因仍然存在,但如果我将它们放在嵌入式中则不会。
答案 0 :(得分:1)
使用以下代码修复它:
public PrelevationSurvey save(PrelevationSurvey prelevationSurvey) {
PrelevationSurvey attachedPrelevationSurvey = super.save(prelevationSurvey);
attachedPrelevationSurvey.getGeneralPatientInformation().setCausesOfDeath(prelevationSurvey.getGeneralPatientInformation().getCausesOfDeath());
return attachedPrelevationSurvey;
}
save方法调用&#34; entityManager.merge(entity)&#34;。 我自己合并了这个系列。