我使用注释创建了域对象,现在我需要编写一些sql查询来从/向多个表中获取/插入/更新数据。
有没有办法只将hbm.xml文件中的sql查询保留为命名查询,因为域对象已经使用注释创建,我不需要以xml方式执行。如果可以,那么需要遵循的步骤,请咨询。
提前致谢。
答案 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();
也许可以帮到你:)。