[英]How can I change createCriteria (deprecated) to CriteriaQuery in this method?
codigo 是搜索項目的主鍵,在這種情況下是 estado (state)
我正在嘗試更新此代碼,它來自 hibernate 波紋管 5 版本
public class GenericDAOnew<Entidade> {
private Class<Entidade> classe;
@SuppressWarnings("unchecked")
public GenericDAOnew() {
// APIreflection
this.classe = (Class<Entidade>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@SuppressWarnings("unchecked")
public Entidade buscar(Long codigo){
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
try {
Criteria consulta = sessao.createCriteria(classe);
// adicionando restricao como o where do sql
consulta.add(Restrictions.idEq(codigo));
Entidade resultado = (Entidade) consulta.uniqueResult();
return resultado;
} catch (RuntimeException e) {
throw e;
} finally {
sessao.close();
}
}
}
你可以嘗試這樣的事情:
CriteriaBuilder builder = sessao.getCriteriaBuilder();
CriteriaQuery<Entidade> criteria = builder.createQuery( classe );
Root<Entidade> root = criteria.from( classe );
criteria.select( root );
criteria.where( builder.equal( root.get( "id" ), codigo ) ); // Entidade_.id
Entidade resultado = sessao.createQuery( criteria ).getSingleResult();
如果您要使用JPA static 元模型,它允許以強類型的方式構造 Criteria 查詢,您可以將硬編碼的字段名稱"id"
替換為Entidade_.id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.