我有一个项目要从Spring3.2升级到最新的Spring或至少是Spring4.3.x。首先不推荐使用某些orm对象JpaTemplate / JpaCallback,在Spring4中将其完全删除。
<T> T findSingle(final RepositoryQuery query, final QueryOption options) {
try {
T result = (T) getJpaTemplate().execute(new JpaCallback() {
@Override
public Object doInJpa(EntityManager entityManager) throws PersistenceException {
QueryTranslator translator = new QueryTranslator();
javax.persistence.Query ejbQuery = translator.translate(entityManager, query, options);
return ejbQuery.getSingleResult();
}
});
addToIdentitySet(result);
return result;
} catch (EmptyResultDataAccessException e) {
return null;
} catch (RuntimeException e) {
throw new RepositoryException(e);
}
}
Spring4建议可以通过EntityManager直接完成所有JpaDaoSupport / JpaTemplate / JpaCallback工作,但是我没有找到涵盖所有不同类型用例的好示例。我认为可以轻松地转换诸如保存/删除等简单操作,但是像上面这样的一些复杂代码却并非一帆风顺。有人可以建议如何转换上面的代码以在Spring4中运行。
此外,我没有发现删除这些Jpa对象的原因是什么。有人可以帮我澄清一下,帮助转换上面的代码,还是指向一些特定的代码示例。