在按顺序注释中休眠错误的别名

本文关键字:错误 别名 休眠 顺序 注释 | 更新日期: 2023-09-27 18:35:49

我在"Fault"表(左侧)中设置了父子关系,右侧表中设置了关联的实体"Review"。

-------------------------------    -------------------
|Id|Parent|Timestamp|Review_Id|    |Id|Note|Timestamp|
-------------------------------    -------------------

我的休眠映射如下所示:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="Models" assembly="DataAccess">
  <class name="Fault" table="Fault">
    <cache usage="read-write" />
    <id name="Id">
      <column name="Id" not-null="true" />
      <generator class="guid.comb" />
    </id>
    <many-to-one name="Parent" class="Fault" column="Parent_Id" cascade="all" />
    <one-to-one name="Review" class="Review" property-ref="Fault" />
    <bag name="SubFaults" lazy="true" order-by="Timestamp">
      <key column="Parent_Id" />
      <one-to-many class="Fault" />
    </bag>
    <property name="Timestamp" not-null="false" />
  </class>
</hibernate-mapping>

当我访问子错误集合时,我收到有关不明确列"时间戳"的异常。查看生成的查询会快速发现问题。最后在"ORDER BY 时间戳"处不使用别名。这导致了这种异常,因为机器人表"错误"和"审查"当然是连接在一起的,并且它们都有一个"时间戳"列。当我将此行:"更改为"时,一切正常。但是我需要按时间戳对子错误进行排序。我做错了什么?

在按顺序注释中休眠错误的别名

在任何情况下,当我们使用 DB Engine 关键字时,可以提供帮助的是包装列名。对于SQL Server,它是[] 。所以,尝试使用

<property name="Timestamp" column="[Timestamp]" not-null="false" />

还有更通用的样式,我记得有一个像'这样的符号,但对于sql服务器,[]可以完成这项工作