gpt4 book ai didi

java - JPA 自动增量合并

转载 作者:行者123 更新时间:2023-12-01 10:46:32 24 4
gpt4 key购买 nike

我有一个实体,它具有以下多个字段以及在插入时自动生成的字段

现在,每次我想在 DAO 中使用 merge() 进行更新时,它都会添加一个新条目,而不是更新当前条目。我假设这是由于 id 上的 UPDATE 语句造成的,并且 id 每次都是新的。 JPA(Hibernate)中是否有一种方法可以避免在数据库中写入新记录而只是进行更新。请在下面找到我的实体对象:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "CONFIG_ID")
private long configID;

@ManyToOne
@JoinColumns({
@JoinColumn(name = "CID", referencedColumnName = "CID", insertable = true, updatable = false),
@JoinColumn(name = "DID", referencedColumnName = "DID", insertable = true, updatable = false)})
@Version private <Object> dE;
@Column(name = "HISTORY", nullable = false, unique = false)
private String history;

最佳答案

merge() 适合分离实体使用。这是更新或插入操作,具体取决于合并对象的标识是否为空。如果为 null ,则会插入一条新记录。

要正确更新 JPA 中的实体,您只需加载它并更改其属性即可。当事务提交时,JPA 将判断是否有任何属性更改,如果有更改,则发出 UPDATE SQL。无需调用 EntityManager 上的任何方法来进行任何更新。

引用:

关于java - JPA 自动增量合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34139075/

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