Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
与JPA和子类ID合并_Jpa - Fatal编程技术网

与JPA和子类ID合并

与JPA和子类ID合并,jpa,Jpa,我得到了两个像这样的实体,第二个和第一个有关系: @Entity @Table(name="FOA_ADRESSE_ICX") public class FoaAdresseIcx implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="ID_ADRESSE", unique=true, nullable=false, precision=5

我得到了两个像这样的实体,第二个和第一个有关系:

@Entity
@Table(name="FOA_ADRESSE_ICX")
public class FoaAdresseIcx implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="ID_ADRESSE", unique=true, nullable=false, precision=5)
    private long idAdresse;

    @Column(length=32)
    private String bat;

    @Column(name="COD_POSTAL", length=5)
    private String codPostal;

    // getters and setters ....
}

@Entity
@Table(name="FOA_INFOS_ICX")
public class FoaInfosIcx implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="COD_ICX", unique=true, nullable=false, length=8)
    private String codIcx;

    @Column(name="DATE_RAFFRAICHISEMENT")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateRaffraichisement;

    @Column(name="LIB_AGENCE", nullable=false, length=98)
    private String libAgence;

    //uni-directional many-to-one association to FoaAdresseIcx
    @ManyToOne
    @JoinColumn(name="ID_ADRESSE", nullable=false)
    private FoaAdresseIcx foaAdresseIcx;

    // getters and setters....
}
我对合并有问题:

myEntityMgr.merge(myFoaInfosIcx);
获得此异常:

GRAVE: EJB Exception: : javax.persistence.EntityNotFoundException: Unable to find com.groupama.middlgan.entities.FoaAdresseIcx with id 0
在myFoaInfosIcx中,id为0,因为我不初始化它,因为如果不存在,我希望JPA在数据库中创建新的FoaAdresseIcx


如何做到这一点?

使用原语类型作为DB ID有您当前遇到的缺点。默认值为0,这对于DB id是完全有效的值

持久性提供程序假定实体不是新的,而是分离的,并相应地进行操作

一种解决方案是使用包装类或其他非基本类(如UUID)作为ID—在您的情况下为Long。除非显式实例化,否则id属性将为null,提供者将正确地将实体标识为新实体