gpt4 book ai didi

java - 具有自动增量的主/详细关系。有没有可能一次持久化它们?

转载 作者:行者123 更新时间:2023-11-29 02:06:21 24 4
gpt4 key购买 nike

我有这个场景:

tbl_master(
master_field_pk int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`master_field_pk`)
)

tbl_detail(
`detail_field_pk` int(11) NOT NULL AUTO_INCREMENT,
`master_field_pk` int(11) DEFAULT NULL,
CONSTRAINT `child_fk1` FOREIGN KEY (`master_field_pk`) REFERENCES `tbl_master` (`master_field_pk`) ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY (`master_field_pk`)
)

这是我的 hibernate 大师类:

@Entity
@Table(name = "tbl_master")
@Name("TblMaster")
public class TblMaster implements Serializable{
@Id
@Column(name = "master_field_pk")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer MasterFieldPk;

@Cascade({CascadeType.ALL,CascadeType.DELETE_ORPHAN})
@OneToMany(mappedBy="tblMaster")
@JoinColumn(name="master_field_pk", insertable=true, updatable=true, referencedColumnName="master_field_pk")
private Set<TblDetail> tblDetails;

@Transient
private List<TblDetail> tblDetailsList;

// any other things
}

这个是关于细节的:

@Entity
@Table(name="tbl_detail")
@Name("TblDetail")
public class TblDetail implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="detail_field_pk")
private Integer detailFieldPk;

@Column(name="master_field_pk")
private Integer MasterFieldPk;

@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="master_field_pk", insertable = false, updatable = false, referencedColumnName = "master_field_pk")
private TblMaster tblMaster;

// any other things
}

为了插入,我使用了这段代码(或多或少):

TblDetail detail_1 = ...
detail_1.setTblMaster(tblMaster);
// and so on ..

Set<TblDetails> set = ...
set.add(detail_1);
// and so on...

tblMaster.setTblDetails(set);
em.persist(tblMaster);
em.flush();

所有记录(主记录和明细记录)都完美插入。但是,tbl_detail 中的 master_field_pk - 外键 - 仍然为空。是否可以避免这种行为?谢谢

最佳答案

没有。你得先坚持主人。详细信息行需要知道要链接的主 ID 是什么。

这可以完成,但只有当 key 由应用程序分配时才能完成,例如由应用程序或某种 key 服务器分配的 GUID key 。

关于java - 具有自动增量的主/详细关系。有没有可能一次持久化它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com