Есть ли способ сопоставить взаимно однозначное с предложением where?

StackOverflow https://stackoverflow.com/questions/466816

Вопрос

Пожалуйста, извините мое невежество в этой теме, поскольку я относительно новичок в Hibernate / NHibernate, но я столкнулся с отображением, которое я не могу понять:

Вот как выглядит моя таблица базы данных:

<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 либо ВИДЕО, либо клипа.Они заданы как строки, и я, к сожалению, не могу это изменить.

Итак, если в поле ItemType указано "VIDEO", я бы хотел иметь объект "Видео" Много-к-одному, Однако, если в поле ItemType указано "КЛИП", я бы хотел иметь клип "Много к одному".

Помогите!

Я даже не уверен, хочу ли я использовать соотношение "Много к одному" в этом случае.Может быть, Один на один?

Это было полезно?

Решение

Мне кажется, у вас есть кандидат на наследство.Если у вас есть абстрактный базовый тип BinContents, создайте производный класс VideoBinContents, который содержит только отображение видео, и ClipBinContents, который содержит только отображение клипа.Ваш itemtype - это ваш дискриминатор.Посмотрите здесь, чтобы узнать больше: http://www.hibernate.org/hib_docs/reference/en/html/inheritance.html

Другие советы

Не могли бы вы иметь в своем классе объекты Video и Clip и просто убедиться, что оба они никогда не заполняются одновременно?Возможно, от вас потребуется дополнительная информация, например, о вашей текущей структуре классов.Кроме того, будет ли только одно видео на объект Bin и наоборот?

Возможно, это сложнее, чем то, что вы ищете, но, возможно, вы могли бы настроить базовый класс для своих ячеек и иметь подклассы Video или Clip.Используя иерархию наследования таблицы для каждого класса, вы могли бы использовать существующую структуру таблицы.

Выполнение этого позволило бы вам предоставлять различные сопоставления для каждого подкласса.

Вы могли бы взглянуть на любое отображение.С помощью сопоставления "any" вы можете определить полиморфную ассоциацию.

Проверить это (пункт 5.2.4)

В любом случае, я не знаком с вашим "доменом", но я думаю, что Джим тоже в чем-то прав.Возможно, вам следует просмотреть ваши datamodel и domainmodel (если возможно) и посмотреть, не подходит ли здесь какое-либо наследование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top