弃用的createCriteria替代

时间:2017-04-21 13:12:24

标签: java hibernate

我正在开发一个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();
}

0 个答案:

没有答案