我正在使用 Hibernate 持久化父子对象。这里 Parent 带有一个id
来自发件人系统的主键,并且始终是唯一的。
对于每个具有父 id 的新传入对象不存在,则父对象将使用我的应用程序数据库特定的主键插入到父表中,ParentPK
并且子行将插入相应ParentFK
的 .
如果我的应用程序数据库中已经存在父 ID,那么我只需更新父表。但是如果 ParentPK 已经存在,我应该如何为子行插入 ParentFK?表结构:
CREATE TABLE Parent(
ParentPK bigint NOT NULL,
TypeCode int NULL,
Id bigint NULL,
FullName varchar(50) NULL
}
CREATE TABLE Child(
ChildPK bigint NOT NULL,
Code int NULL,
Designation int NULL,
ParentFK bigint NULL
}
ALTER TABLE Child ADD
CONSTRAINT FK_Child_Parent FOREIGN KEY(ParentFK)
REFERENCES Parent (ParentPK)
实体类:
@Entity
@Table(name="Parent")
public class ParentType extends HibernateEntity{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="KeyGenerator")
@GenericGenerator(name = "KeyGenerator",
strategy = "services.db.hibernate.KeyGenerator")
protected Long parentPK;
protected String id;
protected int typeCode;
protected String fullName;
@OneToMany(mappedBy="parent",targetEntity=ChildType.class,fetch=FetchType.LAZY,cascade = CascadeType.ALL)
protected List<ChildType> child;
}
@Entity
@Table(name="Child")
public class ChildType extends HibernateEntity{
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="KeyGenerator")
@GenericGenerator(name = "KeyGenerator",
strategy = "services.db.hibernate.KeyGenerator")
protected Long childPK;
protected int code;
protected int designation;
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="ParentFK")
protected ParentType parent;
}