我正在开发一个hibernate应用程序。看起来我正在开发比新5.2更早的hibernate版本。
在我的maven更新后,我发现我的查询全部弃用了......: - (
我之前:
public static <T> List<T> getOnly(Class<T> typeClass, String column, String value) throws DatabaseException {
return getSession().createCriteria(typeClass).add(Restrictions.eq(column, value)).list();
}
这很简单明了......
现在我有:
public static <T> List<T> getOnly(Class<T> typeClass, String column, String value) throws DatabaseException {
CriteriaBuilder cb = getSession().getCriteriaBuilder();
CriteriaQuery<T> query = cb.createQuery(typeClass);
Root<T> root = query.from(typeClass);
Path<Set<String>> nicknames = root.get(column);
query.select(root).where(cb.isMember(value, nicknames));
return getSession().createQuery(query).getResultList();
}
看起来不那么简单......
无论如何,这是正确的吗?有没有更短的解决方案,更“性感”??
注意:我需要保留Generic !!
方法其他例子: SELECT * FROM typeClass
是:
public static <T> List<T> getAll(Class<T> typeClass) throws DatabaseException {
return getSession().createCriteria(typeClass).list();
}
现在:
public static <T> List<T> getAll(Class<T> typeClass) throws DatabaseException {
CriteriaQuery<T> query = getSession().getCriteriaBuilder().createQuery(typeClass);
return getSession().createQuery(query).getResultList();
}