【发布时间】:2009-07-15 15:37:12
【问题描述】:
假设以下映射条目:
<id name="InternalId" column="uintCustomerId" type="long">
<generator class="identity" />
</id>
<!-- The BinaryBlob below is a 16 byte array - Think Guid.NewGuid().ToByteArray -->
<property name="CustomerUid" column="uidCustomerId" type="BinaryBlob" not-null="true" />
<property name="Name" column="strFullName" type="String" not-null="true" />
<property name="Age" column="intAge" type="System.Int32" not-null="true" />
<set name="Orders" table="order" generic="true" inverse="false" lazy="false" cascade="all">
<key column="uidCustomerId" />
<one-to-many class="Order" />
</set>
<id name="InternalId" column="uintOrderId" type="long">
<generator class="identity" />
</id>
<!-- This BinaryBlob is a 16 byte array - Think Guid.NewGuid().ToByteArray -->
<property name="CustomerUid" column="uidCustomerId" type="BinaryBlob" not-null="true" />
<property name="OrderDate" column="datOrderDate" type="System.DateTime" not-null="true" />
因此有 2 个类:客户 - 具有上述映射中定义的属性的订单
客户 PK 是 uintCustomerId
订单PK是uintOrderId
uidCustomerId 是 Customer 表上的唯一键,是 Order 表上 Customer 的 fk uidCustomerId 是二进制(16)
数据库无法更改。
鉴于上述情况。我们如何使用 NHibernate Criteria API 进行查询,以提供给定日期之后的客户及其相关订单。注意:我们需要加入不是主键的 uidCustomerId。
这可以通过 Criteria API 完成吗? 这是可以用 HQL 完成的吗?
谢谢, 塔索斯
【问题讨论】:
-
我不明白。如果您已经有了映射,为什么不像往常一样获取 Customer,而不是通过简单的 Customer.Orders 属性引用订单?
-
感谢您的评论 Mufasa 如果您希望客户在特定日期之后收到订单,您将如何进行查询?
标签: .net nhibernate nhibernate-mapping