Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不推荐的createCriteria替代方案_Java_Hibernate - Fatal编程技术网

Java 不推荐的createCriteria替代方案

Java 不推荐的createCriteria替代方案,java,hibernate,Java,Hibernate,我正在开发一个hibernate应用程序。看起来我正在使用比新的5.2版本旧的hibernate版本 在我的maven更新之后,我发现我的查询都被弃用了…:-( 在我之前: public static <T> List<T> getOnly(Class<T> typeClass, String column, String value) throws DatabaseException { return getSession().createCrit

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

}
publicstaticlist getOnly(类typeClass、字符串列、字符串值)引发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();
}
publicstaticlist getOnly(类typeClass、字符串列、字符串值)引发DatabaseException{
CriteriaBuilder cb=getSession().getCriteriaBuilder();
CriteriaQuery=cb.createQuery(typeClass);
Root=query.from(类型类);
路径昵称=root.get(列);
query.select(root.where(cb.isMember(value,昵称));
返回getSession().createQuery(query).getResultList();
}
看起来没那么简单

不管怎样,这是正确的吗?有没有更简短、更“性感”的解决方案?

注意:我需要保持方法的通用性

其他例子: 从typeClass中选择*

是:

publicstaticlist getAll(Class-typeClass)抛出DatabaseException{
返回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();
}
publicstaticlist getAll(Class-typeClass)抛出DatabaseException{
CriteriaQuery query=getSession().getCriteriaBuilder().createQuery(类型类);
返回getSession().createQuery(query).getResultList();
}
public static <T> List<T> getAll(Class<T> typeClass) throws DatabaseException {

    CriteriaQuery<T> query = getSession().getCriteriaBuilder().createQuery(typeClass);

    return getSession().createQuery(query).getResultList();
}