0

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

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

提前致谢。

4

2 回答 2

2

是的,您可以在 xml 文件中使用波纹管标签

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

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

于 2013-04-16T03:31:52.050 回答
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代码:

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

也许对你有帮助:)

于 2013-04-16T03:43:32.970 回答