我需要手绘一个集合。
我正在使用连接表来保存对房间ID和calEvent ID的引用。
但是,查找主要取决于会议室buildingID
- 所以我想将buildingID
添加到以下映射中。有谁知道怎么做?
我查看了NHibernate文档但找不到任何内容。
<bag name="rooms" table="tb_calEvent_rooms" lazy="false">
<key column="calEventID"/>
<many-to-many class="BasicRoom" column="roomID"/>
</bag>
类别:
public class BasicRoom
{
private long _id;
private long _buildingID;
private string _roomName;
任何提示/帮助都非常感激。
推理:
如果我将joinID添加到连接表,那么房间永远不会改变建筑物; 我会从像
这样的东西中减少select语句的复杂性SELECT *
FROM
dbo.tb_calEvent_rooms
INNER JOIN dbo.tb_calEvents ON (dbo.tb_calEvent_rooms.calEventID = dbo.tb_calEvents.id)
INNER JOIN dbo.tb_rooms ON (dbo.tb_calEvent_rooms.roomID = dbo.tb_rooms.id)
INNER JOIN dbo.tb_buildings ON (dbo.tb_rooms.buildingID = dbo.tb_buildings.id)
WHERE
dbo.tb_buildings.id = 54
要
SELECT *
FROM
dbo.tb_calEvents
INNER JOIN dbo.tb_calEvent_rooms ON (dbo.tb_calEvents.id = dbo.tb_calEvent_rooms.calEventID),
dbo.tb_buildings
WHERE
dbo.tb_buildings.id = 54
我的推理是否正确?
答案 0 :(得分:1)
从column
元素中删除many-to-many
属性,并将其添加为子节点insead,以及引用column
的其他buildingID
元素:
<bag name="rooms" table="tb_calEvent_rooms" lazy="false">
<key column="calEventID"/>
<many-to-many class="BasicRoom">
<column name="roomID"/>
<column name="buildingID"/>
</many-to-many>
</bag>
这应该可以让您根据buildingID
以及roomID
进行查询。