在按顺序注释中休眠错误的别名
本文关键字:错误 别名 休眠 顺序 注释 | 更新日期: 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服务器,[]可以完成这项工作