0

我在一个表“故障”(左侧)中设置了父子关系,并在右侧表中设置了关联实体“评论”。

-------------------------------    -------------------
|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>

当我访问 SubFaults 集合时,我得到一个关于不明确的列“时间戳”的异常。查看生成的查询很快就会发现问题。最后在“ORDER BY Timestamp”处没有使用别名。这导致了这个例外,因为当然机器人表“故障”和“审查”连接在一起,并且它们都有一个“时间戳”列。当我将这一行:“”更改为“”时,一切都很好。但我需要按时间戳对SubFaults 进行排序。我究竟做错了什么?

4

1 回答 1

1

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

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

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

于 2013-10-18T08:45:01.283 回答