Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @Embedded中枚举的ElementCollection_Java_Hibernate_Jpa_Enums - Fatal编程技术网

Java @Embedded中枚举的ElementCollection

Java @Embedded中枚举的ElementCollection,java,hibernate,jpa,enums,Java,Hibernate,Jpa,Enums,我试图在嵌入式系统中使用elementCollection,但JPA2.0似乎忽略了它 如果我进入debug,我会看到Embeddeble中的集合已填充,但它不会持久化,JPA也不会抛出任何异常。因为我找不到的原因,它似乎忽略了它 如果我将elementCollection放置在基本实体(包含可嵌入的)中,则会保存该集合 为什么会这样?我怎样才能改变这一点 代码示例: @Entity @Table(name = "PRELEVATION_SURVEY") public class Prelev

我试图在嵌入式系统中使用elementCollection,但JPA2.0似乎忽略了它

如果我进入debug,我会看到Embeddeble中的集合已填充,但它不会持久化,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;

}
@实体
@表(name=“预评估调查”)
公共类预评估调查扩展了域{
@嵌入
私人通用信息通用信息;
}
@可嵌入
公共类通用信息{
@元素集合(
fetch=FetchType.EAGER)
@CollectionTable(name=“导致死亡”,
joinColumns=@JoinColumn(name=“SURVEY_ID”))
@列(name=“死亡原因”)
@枚举(EnumType.STRING)
私人名单导致死亡;
}

再一次。。如果我将死因放在preevationSurvey中,则会保留这些死因,但如果我将其放在EmbeddeAbble中,则不会保留这些死因。

使用以下代码修复了它:

public PrelevationSurvey save(PrelevationSurvey prelevationSurvey) {
    PrelevationSurvey attachedPrelevationSurvey = super.save(prelevationSurvey);
    attachedPrelevationSurvey.getGeneralPatientInformation().setCausesOfDeath(prelevationSurvey.getGeneralPatientInformation().getCausesOfDeath());
    return attachedPrelevationSurvey;
}
save方法调用“entityManager.merge(entity)”。 我自己在做收藏的合并

另见: