如何在Spring4中替换JpaTemplate execute和JpaCallback

时间:2018-12-13 21:52:44

标签: java spring hibernate jpa orm

我有一个项目要从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对象的原因是什么。有人可以帮我澄清一下,帮助转换上面的代码,还是指向一些特定的代码示例。

0 个答案:

没有答案