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

有没有一种方法可以仅将hbm.xml文件中的sql查询保留为命​​名查询,因为域对象已经使用注释创建,而我不需要以xml方式进行。 如果可能的话,那么需要遵循什么步骤,请提出建议。

提前致谢。

===============>>#1 票数:2

是的,您可以在XML文件中使用以下标签

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

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

===============>>#2 票数:2

首先在hbm.xml中定义一个sql查询,如下所示:

<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代码:

列出猫= 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();

也许可以帮助您:)

  ask by Abhijit Deb translate from so

未解决问题?本站智能推荐: