0

S'il vous plaît excuser mon ignorance sur le sujet, comme je suis relativement nouveau dans Hibernate/NHibernate, mais j'ai rencontré une cartographie je ne peux pas comprendre:Existe-t-il un moyen de mapper un un-à-un avec une clause where?

Voici quelle table ma base de données ressemble:

<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> 

Existe-t-il un moyen de mapper un bi-un avec une clause where?

Ainsi, un objet BinContent peut avoir un ItemType de VIDEO ou CLIP. Ceux-ci sont saisis comme des chaînes, et je ne peux pas changer cela malheureusement. Par conséquent, si le champ ItemType indique "VIDEO", j'aimerais avoir un objet "Video" Many-To-One, . Toutefois, si le champ ItemType indique "CLIP", j'aimerais -To-One Clip.

Aide!

Je ne suis même pas sûr si je veux utiliser un Many-To-One dans ce cas. Peut-être un One-To-One?

Répondre

4

Il me semble que vous avez un candidat à l'héritage. Si vous avez un type de base abstrait de BinContents, ayez une classe dérivée de VideoBinContents, qui contient juste un mapping vidéo, et un ClipBinContents qui contient juste un mappage de clip. Votre itemtype est votre discriminateur. Jetez un oeil ici pour plus: http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html

0

Impossible d'avoir des objets Video et Clip dans votre classe et de vous assurer que les deux ne sont jamais remplis en même temps. Peut-être besoin de plus d'informations de votre part, comme votre structure de classe actuelle. Aussi, y aura-t-il seulement un objet Video par Bin et vice versa?

0

Peut-être que cela est plus compliqué que ce que vous cherchez, mais il semble que vous pourriez peut-être configurer une classe de base pour vos bacs et avoir des sous-classes de vidéo ou de clip. En utilisant la hiérarchie d'héritage de table par classe, vous pouvez utiliser votre structure de table existante. Cela vous permettra de fournir différents mappages pour chaque sous-classe.

0

Vous pouvez jeter un oeil à la cartographie any. Avec le mappage 'any', vous pouvez définir une association polymorphe.

Vérifier this (paragraph 5.2.4)

Quoi qu'il en soit, je ne suis pas familier avec votre « domaine », mais je pense que Jim a un point aussi. Peut-être devriez-vous revoir votre modèle de données et votre modèle de domaine (si possible), et voir si un type d'héritage n'est pas approprié ici.

Questions connexes