好的,不要问为什么,但我们要求以下类别结构:
所以,看起来有点像这样:
系统定义的根类别 - >用户定义的子类别 - > sys定义的叶子类别 - >项目
我们需要根据子类别的根类别加载预定义的类别。例如,如果我们有:
车辆 - >我的蒙迪欧 - > [车轮,立体声,仪表板]
用户定义的“我的蒙迪欧”子猫会根据它的根类别(车辆)获取它的子类别。
所以我们有这种反向的多对多关系:
rootCats --1---------0..*-- user-defined cats
| |
1 0..n
| |
| |
| |
0..* |
| |
pre-defined cats--1------------------
我尝试使用以下内容在nhibernate中映射:
<set name="PreDefinedSubCategories" lazy="false" cascade="none" mutable="false">
<key column="vaultCategoryId" property-ref="Category" />
<one-to-many class="PreDefinedVaultCategory" />
</set>
但是,不推荐使用property-ref属性,无论如何它都会抛出“集合与任何会话无关”的错误。
有没有人使用nhibernate实现这样的东西。如果是这样,有没有一个很好的方法,或者我只是定义一个方法来过滤所有叶猫后加载?
答案 0 :(得分:0)
我猜你不能使用where =&#34;&#34;集合映射的属性,除非它接受参数(我怀疑)
也许你应该去找:
我猜你的用户定义的类别和你的子子类别之间也有一个关系表(从根类别的可用子子类别中选择) 然后还可以查看从用户定义的类别到子子类别
的集合(多对多)