2014-12-19 4 views
0

Есть ли способ добавить другие отношения, связанные с отношениями, к импортированному классу домена GORM? В частности, я пытаюсь использовать table-per-class для расширения общего подкласса, но если я делаю это в двух (или более) местах, и в местах не знают друг о друге, тогда такие вещи, как:Добавление нового отношения к импортированному классу GORM

set.addToParents(parentSet) 

Начало ведет к:

org.hibernate.WrongClassException: Object [id=3482] was not of the specified subclass [com.acumenllc.domaincore.DbSet] : Discriminator: com.acumenllc.tickets.domain.TicketSet 

происходит повсюду.

Немного больше фона, я работаю над таблицей закрытия, чтобы отслеживать связанные объекты. Базовый класс распознает двунаправленную связь между родителем и ребенком, а также расширение его потомка-потомка. Различные приложения затем расширяют этот класс с помощью отношений toThere на объектах, которые будут представлены как узлы в результирующем графе. Мы специально хотим иметь возможность более или менее игнорировать некоторые из этих других классов в других приложениях, которые используют одну и ту же базу данных.

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

ответ

1

Единственный практический способ, который я вижу, это сделать с файлами .hbm.xml. Метод GORM, включающий в себя код hasMany/belongsTo в коде и подход JPA с использованием аннотаций, являются довольно негибкими для поддержки такого сопоставления. Но если вы отделите конфигурацию от кода, вы можете определить отношения для разных приложений, как вам нравится. Создание файла hibernate.cfg.xml и файлов hbm.xml описано here in the docs.