4

我想利用 Criteria API 的 db 独立 HQL 和类型安全性。但我没有实体类。

我可以直接使用 Criteria API 吗?

4

3 回答 3

4

不,你不能。HQL 和 Criteria API 的重点是根据实体和它们之间的关联来查询对象模型。

于 2012-05-16T09:30:11.017 回答
2

首先,很高兴注意到 Criteria API 通常用于替代 HQL 来构建动态查询(“ HQL 非常强大,但一些开发人员更喜欢使用面向对象的 API 动态构建查询,而不是构建查询字符串参考链接) .

其次,Hibernate 是一个对象/关系(数据库)持久化实现。为了使用它,我们需要定义其对象应映射到目标数据库表(实体)的类。

对于使用域类为 Hibernate 会话获取 Criteria API:

Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();

Session 对象使用从“Cat”类到其对应表(可能在数据库中命名为“Cat”)的映射。

因此,最终没有实体类及其映射,没有 Session 对象。并且没有 Session ,没有 Criteria 对象。

Criteria 需要知道需要查询的 Classes (Cat.class)。

于 2012-05-16T09:42:19.207 回答
0

你怎么能告诉hibernate你想应用哪个类?

所以你必须在 createcriteria(Entity.class) 中传递实体类名。

而且你... Criteria 提供了丰富的功能,这将减少你的代码。

但请注意……所有事物都有正面 - 负面的意义。

标准也有一些负面影响......

所以..小心。根据您的应用程序相关规范使用

于 2013-03-12T12:36:29.233 回答