使用 Critera 或 QueryOver API 将一列连接到多个表
Joining one column to multiple tables using Critera or QueryOver API
一条路线由Waypoints组成。一个 Waypoint 可以存在于多条路线上。一条路线可以由多个销售员提供服务。
为了获得Waypoints一个销售员需要访问,我可以使用这个(简化)SQL:
SELECT WP.*
FROM Waypoint WP
JOIN RouteWaypoint RWP
ON RWP.RouteId = WP.RouteId
JOIN Route R
ON RWP.RouteId = R.RouteId
JOIN RouteSalesMan RMS
ON RMS.RouteId = R.RouteId
WHERE RMS.SalesManId = 5
AND R.Status = 1 -- Only active routes
如何在 NHibernate 中使用 Criteria 或 QueryOver API 生成这个(或类似的)SQL?
我尝试了各种方法,但我似乎无法将 Waypoint 加入 RouteWaypoint 和 RouteSalesMan。当我定义别名时,NHibernate 不允许我多次关联一个字段,当我尝试将 route.RouteId 加入任何东西时,它会抱怨它不是关联。如果我不指定该字段,它会抱怨无法在 Waypoint 上找到字段 "Route"。
事实证明,我的 QueryOver/Criteria 调用结构没有任何问题。 Fluent Nhibernate 映射没有正确生成的问题
复合 ID 创建为:
CompositeId().KeyProperty(x => x.SalesManId, "SalesManId")
... // Details elided;
References(x => x.SalesMan).Column("SalesManId);
而不是
CompositeId().KeyReference(x => x.SalesManId, "SalesManId")...
一条路线由Waypoints组成。一个 Waypoint 可以存在于多条路线上。一条路线可以由多个销售员提供服务。
为了获得Waypoints一个销售员需要访问,我可以使用这个(简化)SQL:
SELECT WP.*
FROM Waypoint WP
JOIN RouteWaypoint RWP
ON RWP.RouteId = WP.RouteId
JOIN Route R
ON RWP.RouteId = R.RouteId
JOIN RouteSalesMan RMS
ON RMS.RouteId = R.RouteId
WHERE RMS.SalesManId = 5
AND R.Status = 1 -- Only active routes
如何在 NHibernate 中使用 Criteria 或 QueryOver API 生成这个(或类似的)SQL?
我尝试了各种方法,但我似乎无法将 Waypoint 加入 RouteWaypoint 和 RouteSalesMan。当我定义别名时,NHibernate 不允许我多次关联一个字段,当我尝试将 route.RouteId 加入任何东西时,它会抱怨它不是关联。如果我不指定该字段,它会抱怨无法在 Waypoint 上找到字段 "Route"。
事实证明,我的 QueryOver/Criteria 调用结构没有任何问题。 Fluent Nhibernate 映射没有正确生成的问题
复合 ID 创建为:
CompositeId().KeyProperty(x => x.SalesManId, "SalesManId")
... // Details elided;
References(x => x.SalesMan).Column("SalesManId);
而不是
CompositeId().KeyReference(x => x.SalesManId, "SalesManId")...