Там целый ряд параметров, которые вы можете осуществлять миграцию из устаревших Hibernate Criteria API, это лишь некоторые из них, которые сразу приходят на ум:
- HQL/JPQL
- Названный запроса
- JPA Критерии API
с точки зрения HQL/JPQL, можно переписать запрос в виде строки:
Curso result = session.createQuery("FROM Curso WHERE codigo = :codigo")
.setParameter("codigo", curso.getCodigo())
.uniqueResult();
Вы также можете использовать @NamedQuery
, который в основном представляет собой аннотацию, которую вы применяете к сущности или пакету, где вы предоставляете запрос HQL, как вы видите выше, указав местозаполнитель для ваших параметров запроса так же, а затем поставляя эти параметры во время выполнения при выполнении запроса, например:
Curso result = session.createNamedQuery("Curso.findByCodigo")
.setParameter("codigo", curso.getCodigo())
.uniqueResult();
И, наконец, вы можете также рассмотреть вопрос о JPA Criteria API. Это доступно, если вы используете JPA EntityManager
, а не Hibernate Session
.
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Curso> query = cb.createQuery(Curso.class);
Root<Curso> root = query.from(Curso.class);
query.select(root)
.where(cb.eq(root.get("codigo"), curso.getCodigo()));
Curso result = entityManager.createQuery(query).getSingleResult();
Чтобы помочь вам получить ответ, пожалуйста, ознакомьтесь http://stackoverflow.com/help/how-to-ask о том, как задать вопрос – CCBlackburn
тот же вопрос: https://stackoverflow.com/questions/ 40720799/устаревшим-createcriteria-метод-в-гибернации-5 – faoxis