我正在使用
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")
答案 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>