2009-01-21 101 views
0

请原谅我的无知的话题,因为我是比较新的休眠/ NHibernate的,但我已经遇到了一个映射我想不通:有没有办法用where子句映射一对一?

这是我的数据库表如下所示:

<bincontents> 
    <id>5873715</id> 
    <title>Video Title</title> 
    <sortorder>0</sortorder> 
    <itemid>23079</itemid> 
    <itemtype>VIDEO</itemtype> 
</bincontents> 
<bincontents> 
    <id>5873716</id> 
    <title>Clip Title</title> 
    <sortorder>1</sortorder> 
    <itemid>131854</itemid> 
    <itemtype>CLIP</itemtype> 
</bincontents> 

有没有办法用where子句映射一对一?

因此,BinContent对象可以有ItemType为VIDEO或CLIP。这些都是字符串键,我不能改变这一点,不幸的是。

因此,如果ItemType字段显示“VIDEO”,我想要有一个多对一的“Video”对象,但是如果ItemType字段显示“CLIP”,我想要多一对一剪辑。

帮助!

我甚至不确定我是否想在这种情况下使用多对一。也许是一对一?

回答

0

难道你不能同时在视频和剪辑对象,并确保两个都不会在同一时间?可能需要更多的信息,比如你目前的班级结构。另外,每个Bin对象只有一个Video,反之亦然?

0

也许这比你要找的更复杂,但似乎你可以为你的垃圾箱设置一个基类,并有子类的视频或剪辑。使用每个类继承层次的表,您可以使用现有的表结构。

这样做可以让你为每个子类提供不同的映射。

0

你可以看看任何映射。使用'任何'映射,您可以定义多态关联。

检查this (paragraph 5.2.4)

反正,我不熟悉你的‘域’,但我认为吉姆有一个点为好。也许你应该检查你的datamodel和domainmodel(如果可能的话),并查看某种类型的继承在这里是否不合适。

相关问题