小编adi*_*son的帖子

在 Hibernate 5 中,CriteriaQuery 等价于 Criteria 的限制和投影是什么?

在 Hibernate 5 弃用 Criteria 类之前,您可以向 Criteria 添加限制以充当约束,并添加投影以充当 select 语句,如下所示

Criteria criteria = session.createCriteria(T.class)
    .add(Restrictions.or(Restrictions.eq(property, constraintValue)
    .set(Projection(Projections.projectionList()
    .add(Projections.property(selectValue)));
Run Code Online (Sandbox Code Playgroud)

但是,由于您现在需要像这样使用 CriteriaQuery,

 CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
 CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(T.class);
 Root<T> root = criteriaQuery.from(T.class);
 criteriaQuery.select(root);

 Query<T> query = session.createQuery(criteriaQuery);
Run Code Online (Sandbox Code Playgroud)

然而,我一直无法弄清楚如何添加 SQL 语句中所需的某些内容,主要是因为由于命名相似性,搜索文档往往会找到有关 Criteria 的文档。

那么,如何使用 CriteriaQuery 重新创建一个简单的查询(如下所示)?

SELECT selectValue  
FROM tables.T  
WHERE property = constraintValue
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-criteria

5
推荐指数
1
解决办法
1万
查看次数

在可能的情况下,是否应该删除SQL查询以支持使用Hibernate?

阅读了Hibernate的理论后,我多次遇到这样的想法,在理想的世界中,你不应该将Hibernate与原始的SQL查询混合在一起,原因有多种,比如Hibernate无法识别以这种方式执行的更改在正确冲洗方面有影响.

我的任务是尝试优化和改进与数据库通信的几个类,但不经过Hibernate就这样做.他们直接使用JdbcTemplate来运行查询,我注意到这对更新语句更常见.

这是故意和良好的设计,由于某些原因,例如只更新选定数量的字段并且数据库中的对象非常大,或者我是否应该重构这些类以便它们利用DAO层类来执行这些更新疑问?

java hibernate

5
推荐指数
1
解决办法
165
查看次数

标签 统计

hibernate ×2

java ×2

hibernate-criteria ×1