NHibernate DuplicateMappingException, когда два класса имеют то же имя, но различные пространства имен

Так... Почему теряет производную информацию плохо?..., потому что автор производного класса, возможно, изменил представление, таким образом, что отрезание дополнительной информации изменяет значение, представленное объектом. Это может произойти, если производный класс, если используется кэшировать представление, которое является более эффективным для определенных операций, но дорогим для преобразования назад к основному представлению.

Также мысль кто-то должен также упомянуть то, что необходимо сделать, чтобы не резать... Получите копию Стандартов Кодирования C++, 101 инструкции по правилам и лучших практик. Контакт с разрезанием является № 54.

, Это предлагает, чтобы несколько сложный шаблон полностью занимался проблемой: имейте защищенного конструктора копии, защищенный чистый виртуальный DoClone и общедоступный Клон с утверждением, которое скажет Вам, если (дальнейшему) производному классу не удалось реализовать DoClone правильно. (Метод Клона делает надлежащую глубокую копию полиморфного объекта.)

можно также отметить конструктора копии на основе, явной, который допускает явное разрезание, если это желаемо.

25
задан cdmckay 20 July 2009 в 22:19
поделиться

2 ответа

Я нашел ответ на веб-сайте Hibernate:

Если у вас есть два постоянных класса с таким же безоговорочным именем вы должен установить auto-import = "false". An исключение произойдет, если вы попытаетесь присвоить два класса одному и тому же "импортированное" имя.

Я использовал это как атрибут для тега , и это сработало.

24
ответ дан 28 November 2019 в 21:06
поделиться

Вы можете указать полное имя класса в документе сопоставления следующим образом:

<class name="SeeMe.Data.People.Relationship, SeeMe.Data" ... > ...

Где SeeMe.Data - сборка.

3
ответ дан 28 November 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: