命名的SQL查询

时间:2013-04-16 03:24:53

标签: hibernate

我使用注释创建了域对象,现在我需要编写一些sql查询来从/向多个表中获取/插入/更新数据。

有没有办法只将hbm.xml文件中的sql查询保留为命​​名查询,因为域对象已经使用注释创建,我不需要以xml方式执行。如果可以,那么需要遵循的步骤,请咨询。

提前致谢。

2 个答案:

答案 0 :(得分:2)

是的,您可以在xml文件中使用bellow标记

<sql-query name="Myquery">
   select * from YourTableName
</sql-query>

检查此示例 http://www.java4s.com/hibernate/example-on-hibernate-named-queries/

答案 1 :(得分:2)

首先在hbm.xml中定义一个sql-query,如:

<sql-query name="persons"> 
  <return alias="person"  class="eg.Person"/> 
 Select person.NAME AS {person.name},person.AGE AS {person.age},person.SEX AS {person.sex} FROM PERSON person Where person.NAME LIKE :namePattern
</sql-query>

然后按照声明的名称获取它:

List people = sess.getNamedQuery("persons").setString("namePattern" ,namePattern)
.setMaxResults( 50 )
.list();

另一种方法是,不需要sql-query元素,直接编写java代码:

列出cats = sess.createSQLQuery(

"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id ")
.addEntity("cat" , Cat. class)         // add entity
.addJoin("kitten" ,  "cat.kittens ")   // add related entity 
.list();

也许可以帮到你:)。