gpt4 book ai didi

orm - 如何使用EclipseLink和JPA2实现通用的“saveOrUpdate”方法

转载 作者:行者123 更新时间:2023-12-04 15:46:46 27 4
gpt4 key购买 nike

我正在尝试做这样的方法,错误出现了并发问题..似乎我的更新方法没有增加我实体的@Version属性。

我的代码是这样的:

      @Transactional
public B save(B bean) {
if (bean == null || bean.getId() == null) {
persist(bean);
} else {
bean = update(bean);
}
return bean;
}

protected final B update(B bean) {
bean = em().merge(bean);
em().flush();
return bean;
}


这是我的AbstractDao的一段代码。 em()方法返回由Guice-Persist管理的EntityManager。

另外,我正在使用eclipselink。

提前致谢

最佳答案

我用以下代码解决它:

protected final void persist(B bean) {
em().persist(bean);
}

protected final B update(B bean) {
bean.setVersion(findById(bean.getId()).getVersion());
bean = em().merge(bean);
em().flush();
return bean;
}

@Transactional
public B save(B bean) {
if (bean == null || bean.getId() == null) {
persist(bean);
} else {
bean = update(bean);
}
return bean;
}

关于orm - 如何使用EclipseLink和JPA2实现通用的“saveOrUpdate”方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10541155/

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