2010-12-05 143 views
4

我正在开发用于实现MVC基于Struts2框架 Web应用程序,并Hibernate3中通过的的DAO手段accesing数据库,的DTO为映射数据库中的对象关系。在Hibernate上下文中,我想知道Criteria Clases用于进行复杂查询的范围,以及是否还有其他选项可用于执行此类任务?Hibernate的标准类制作复杂的查询数据库

谢谢。

回答

3

通过“reach”,我假定您的意思是复杂的SQL相关查询的域,可以通过链接方法调用通过特定的Criteria对象构建域(如here所述)。

根据我的经验,依靠结果过滤,排序,投影,分组,逻辑连接或分离语句或subquerying的大多数常见任务可以通过以预期方式变异对象来执行。

作为一种替代方案,您可以使用Session.createSQLQuery构造原始SQL查询,然后使用Query.listQuery.executeUpdate来执行它。例如:

Sesion sess = getSession(); 
Query mySelect = sess.createSQLQuery("SELECT * from foo"); 
List<Entity> results = mySelect.list(); 

Query myUpdate = sess.createSQLQuery("DELETE * from foo where bar = \"boz\""); 
int updateCount = myUpdate.executeUpdate(); 

很明显,你会想从这个天真的例子中延伸出来,但你明白了。

+0

非常感谢你回答 – Dana 2010-12-05 02:49:35