【发布时间】:2016-01-22 00:30:57
【问题描述】:
我通过 Hibernate 持久迁移到 JPA。 我用两个实体进行测试,当持久化一个实体时,我收到关于 forgein 键的 null 值的约束违规异常。
这是数据库表的结构:
CREATE TABLE AZIENDA
(AZN_ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
...
CREATE TABLE AGENTE
(AGN_ID INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
AGN_IDAZN INTEGER NOT NULL,
...
CONSTRAINT FK_AGN_AZN FOREIGN KEY (AGN_IDAZN) REFERENCES AZIENDA (AZN_ID) ON DELETE CASCADE);
实体:
@Entity
@Table(name="AZIENDA")
public class Azienda {
@Column(name="AZN_ID")
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
...
@Entity
@Table(name="AGENTE")
public class Agente {
@Column(name="AGN_ID")
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name="AGN_IDAZN")
@JoinColumn(name="FK_AGN_AZN", referencedColumnName="AZN_ID")
@ManyToOne()
// @ManyToOne(optional=true, cascade=CascadeType.PERSIST)
@Transient
private Azienda azienda;
...
首先从数据库中检索对象'Azienda',实例化一个新的'Agente'实体并设置属性'azienda',当创建并持久化一个新实体'Agente'时,我收到ConstraintViolationExcpetion列'AGN_IDAZN'可以'不包含 null 值,但实例 'Azienda' 不为 null。
谢谢!!
【问题讨论】: