嵌入式中Enum的@ElementCollection

时间:2015-12-01 12:29:06

标签: java hibernate jpa enums

我试图在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上,死亡的原因仍然存在,但如果我将它们放在嵌入式中则不会。

1 个答案:

答案 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;。 我自己合并了这个系列。

另见:https://hibernate.atlassian.net/browse/HHH-6143