2016-11-21 335 views
22

此电话已经过时:已过时个createCriteria方法5

session.createCriteria(Bus.class).list(); 

在源文件,我可以看到这一点:

/** @deprecated */ 
@Deprecated 
Criteria createCriteria(Class var1); 

/** @deprecated */ 
@Deprecated 
Criteria createCriteria(Class var1, String var2); 

/** @deprecated */ 
@Deprecated 
Criteria createCriteria(String var1); 

/** @deprecated */ 
@Deprecated 
Criteria createCriteria(String var1, String var2); 

但我不明白我必须使用的,而不是哪一种方法createCriteria

+2

休眠版本???? – pleft

+0

您是否需要列出域对象的方法?如果是这样,请尝试'Bus.createCriteria()' – matox

回答

33

您可以使用下面的接口,而不是处于休眠5.2 +:

javax.persistence.criteria.CriteriaBuilder 
javax.persistence.criteria.CriteriaQuery 

// Create CriteriaBuilder 
CriteriaBuilder builder = session.getCriteriaBuilder(); 

// Create CriteriaQuery 
CriteriaQuery<YourClass> criteria = builder.createQuery(YourClass.class); 
+0

谢谢!你可以推荐我在这里使用'hibernate criteria':'((Role)criteria.add(Restrictions.eq(“name”,name))。uniqueResult())。getId();'? – faoxis

+3

您可以使用'CriteriaQuery where'方法。更多信息在这里:https://docs.oracle.com/cd/E19798-01/821-1841/gjivi/index.html – DimaSan

+4

真实的代码和完整的例子:[Giflib hibernate:使用JPA标准更新到Hibernate 5.2 API](https://github.com/treehouse/giflib-hibernate/commit/f97a2828a466e849d8ae84884b5dce60a66cf412) – rvheddeg

1

从API文档:

@Deprecated 标准个createCriteria(对PersistentClass类) 已过时。 (自5.2开始),使用JPA标准 为给定类(实体或子类/实现者)创建条件实例。 参数: 对PersistentClass - 类,它是一个实体,或对其具有实体子/实施者 返回: 的操作和执行

所以,简单地说,以该标准实例...

使用JPA标准创建标准