Hibernate在映射文件中定义命名查询语句
Hibernate在映射文件中定义命名查询语句
在映射文件中定义命名查询语句
Hibernate允许在映射文件中定义字符串形式的查询语句,例如,可以再Customer.hbm.xml文件中定义如下HQL查询语句:
Xml代码
1. <hibernate-mapping>
2. <class name="mypack.Customer" table="CUSTOMERS">
3. ...
4. </class>
5.
6. <query name="findCustomersByName"><![CDATA[
7. from Customer c where c.name like :name
8. ]]></query>
9.
10. </hibernate-mapping>
<hibernate-mapping>
<class name="mypack.Customer" table="CUSTOMERS">
...
</class>
<query name="findCustomersByName"><![CDATA[
from Customer c where c.name like :name
]]></query>
</hibernate-mapping>
<query>元素用于定义一个HQL查询语句,它和<class>元素并列.
以上HQL查询语句被命名为"findCustomersByName",在程序中通过Session的getNamedQuery()方法获取该查询语句:
Java代码
1. Query query = session.getNamedQuery("findCustomersByName");
2. query.setString("name", name);
3. List result = query.list();
Query query = session.getNamedQuery("findCustomersByName");
query.setString("name", name);
List result = query.list();
命名查询语句既可以是HQL查询语句,也可以使本地SQL查询语句:
Xml代码
1. <sql-query name="findCustomersByName" ><![CDATA[
2. select {c.*} from CUSTOMERS c where c.NAME like :name
3. ]]>
4. <return alias="c" class="Customer"/>
5. </sql-query>