我正在尝试在可嵌入对象中使用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

09-08 06:52