【发布时间】:2022-06-14 23:44:08
【问题描述】:
Item 和 Booker 之间存在多对多关系。 这是一个表格的例子:
create table Item (
id int generated by default as identity primary key,
name varchar(200) not null
);
CREATE TABLE Booker (
id int generated by default as identity primary key,
fisrtName varchar(200),
lastName varchar(200)
);
create table Item_Booker (
id int generated by default as identity primary key,
itemId int not null references Item(id),
bookerId int not null references Booker(id)
);
对应型号如下:
public class Item : AbstractPersistentEntity
{
public virtual string Name { get; set; }
public virtual IList<Booker> Bookers { get; set; }
}
我使用这个映射:
<hibernate-mapping
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:nhibernate-mapping-2.2" xsi:schemaLocation="urn:nhibernate-mapping-2.2 ../../nhibernate-mapping.xsd"
namespace="BirthList.Core.Model" assembly="BirthList.Core">
<class name="Item" table="item">
<id name="Id" column="id">
<generator class="identity"/>
</id>
<property name="Name" column="name"/>
<!-- Association n-n -->
<list name="Bookers" table="item_booker">
<key column="itemId"/>
<list-index column="id"/>
<many-to-many class="Booker" column="bookerId"/>
</list>
</class>
</hibernate-mapping>
我的问题是,当我从数据库中检索数据时,我的 Booker 列表中的项目比预期的要多。并且额外的项目是空的(并且不存在于数据库中)。
我已经检查了 Booker 表的数据库并且只有这个项目:
对于 Item_booker 表,我只有这些:
这对应于我的以下两个项目:
有人有什么想法吗?
【问题讨论】:
标签: nhibernate many-to-many nhibernate-mapping