与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,提供者将正确地将实体标识为新实体