读书人

Hibernate在照射文件中定义命名查询语

发布时间: 2012-10-11 10:16:10 作者: rapoo

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>

读书人网 >软件架构设计

热点推荐