【发布时间】:2013-12-26 23:57:03
【问题描述】:
好吧,我在 postgreSQL 中有一个触发器函数,每次插入新行时都会生成一个数字。但是 JPA/Hibernate 在“entityManager.persist(bean)”之后不显示这个生成的数字。所以我做了以下强制它:
@Transactional(readOnly = true, propagation = Propagation.REQUIRED)
public AbstractBean save(AbstractBean bean) {
try {
logger.info("Salvando Bean " + bean.getClass().getName());
entityManager.persist(bean);
entityManager.flush();
entityManager.clear();
return bean;
} catch (Exception e) {
e.printStackTrace();
logger.error("Ocorreu um erro ao tentar salvar. MSG ORIGINAL: "
+ e.getMessage());
throw new DAOException("Ocorreu um erro ao tentar salvar");
}
}
我在persist方法之后插入了“flush and clear”,一切都很好。但我最大的疑问是:所有应用程序都调用我的方法“save”来保存任何 JavaBean,所以如果我在所有持久化或合并中进行刷新和清除没有问题?这是更好的选择?
【问题讨论】: