如何在没有实体类的情况下使用Hibernate Criteria API?

时间:2012-05-16 09:26:42

标签: java hibernate criteria-api hibernate-criteria

我想利用数据库独立的HQL和Type Criteria API的类型安全性。但我没有实体课程。

我可以直接使用Criteria API吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

首先,我们注意到Criteria API通常用作HQL的替代品来构建动态查询(“ HQL非常强大,但是一些开发人员更喜欢使用面向对象的API动态构建查询,而不是构建查询字符串reference link)。

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

对于使用域类的Hibernate会话获得Criteria API:

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

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

所以,最后没有实体类及其Mappings,没有Session对象。没有Session,没有Criteria对象。

标准需要知道需要查询的类(Cat.class)。

答案 2 :(得分:0)

如何告诉hibernate你要应用哪个类critera ??

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

并且你...标准提供了丰富的功能,这将减少你的代码。

但请注意......所有事情都有积极的 - 消极的。

标准也有一些负面意义......

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