参数名称更改时Hibernate Mapping Xml的用法

时间:2014-07-17 09:17:38

标签: java hibernate named-query

我正在使用

session.getNamedQuery("query1").setString("a", "123") 
session.getNamedQuery("query2").setString("b", "123") 
session.getNamedQuery("query3").setString("c", "123") 

设置参数。

<sql-query name="query1">
    select * from table where a = :a
</sql-query>

<sql-query name="query2">
    select * from table where b = :b
</sql-query>

<sql-query name="query3">
    select * from table where c = :c
</sql-query>

如何仅使用一个namedQuery调用任何一个sqls,例如

<sql-query name="query">
    select * from table where (it can be a or b or c ) = :(it can be a or b or c )
</sql-query>

这个命名查询应该兼顾

session.getNamedQuery("query").setString("a", "123")

session.getNamedQuery("query").setString("c", "123")

2 个答案:

答案 0 :(得分:0)

试一试:

 <sql-query name="query-Once">
    <return alias="employee" class="com.kuntal.common.Employee"/>
    <![CDATA[select * from employee e where e.emp_fname = :empFname and e.emp_lname:empLname]]>
    </sql-query>

现在从您的代码中使用:

Query query = session.getNamedQuery("query-Once")
.setString("empFname", "Kuntal")
.setString("empLname","Ganguly");

基本上你需要使用你想要设置的属性为你的表创建一个java pojo模型对象。最后你可以通过一个命名查询来设置它们,如上所示。希望它可以帮助你!

答案 1 :(得分:0)

Java文件

session.getNamedQuery("myquery").setString("a", "123").setString("b", "123").setString("c", "123");

hbm.xml条目

<sql-query name="myquery">
    <return alias="table" class="com.tutorial.Table"/>
    <![CDATA[select * from table t where t.a = :a or t.b=:b or t.c=:c]]>
</sql-query>