日期:2014-05-17  浏览次数:20714 次

hibernate 语句写法
今天学习别人写代码时发现这个疑问 

有的这样写 SQLQuery lstQuery = this.getSession().createSQLQuery(sql.toString());
有的这样写 Query lstQuery = this.getSession().createQuery(hql.toString());
这两中写法有什么区别呢?
而且给这两个方法传的参数可以是sql形式也可以是Hql形式的吗?

哪位大牛给小弟解释下啊,不胜感激!

------解决方案--------------------
前者是sql,后者是hql.

public interface Query

An object-oriented representation of a Hibernate query. A Query instance is obtained by calling Session.createQuery(). 

public interface SQLQuery
extends Query

Represents a "native sql" query and allows the user to define certain aspects about its execution.

从上面的定义可以看出SQLQuery继承自Query,因此理论上Query也可以使用本地sql。
------解决方案--------------------
第一个是本地化SQL,第二个是HQL。