首页 > 解决方案 > 来自 SQL 查询的休眠映射文件

问题描述

在搜索 SO 和 hibernate 文档后,我似乎找不到我的问题的答案(?)。每个答案都会对我的问题有所帮助,在这里。

我是休眠 hbm.xml 映射文件的新手,我的任务是使用 hbm.xml 输出涉及许多表、连接、计数等的非常大而复杂的查询。

HQL 代码已经完成并正在运行,除非要求新的函数/方法,否则我无法访问它,我可以使用每个表的 hbm.xml 映射来打印所有表,例如:

表 1.hbm.xml:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC '-//Hibernate/Hibernate Mapping DTD 3.0//EN' 'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
  <class name="authorization.model.table1" table="table1">
    <composite-id>
      <key-property name="Id" type="long" column="Id" />
      <key-property name="Sys" type="string" column="Sys" />
    </composite-id>
    <property name="Cod" column="Cod" type="long" />
  </class>
</hibernate-mapping>

结合我的输出代码将打印一个带有id、syscod的列,它来自 table1,它位于 DB 上。到目前为止一切顺利,我也可以打印多对一,组合来自两个不同表的列并打印描述,例如(表 2 中的列和表 1 中的 PK)。

问题是当我需要连接表并使用各种表和它们之间的关系打印更复杂的查询时。

我的问题是:我可以使用已经完成的 SQL 查询并生成 hbm 文件吗?

例如,我是否需要一个 hbm 文件来左连接表,然后调用该文件(结果)。

我很抱歉这个模糊的问题,我也很困惑。

我可以发布我想要/需要映射的查询之一,映射所有表。

标签: xmlhibernate-mappinghbm

解决方案


好的,我找到了解决方案,对于遇到此问题的其他人,我建议您从所有复杂查询中创建数据库视图,然后将该视图中的结果列和类型映射到 hibernate hbm.xml。

这样就不需要在 .hbm 文件中添加复杂的基数了。


推荐阅读