2015-04-20 5 views
0

У меня есть Отвлеченная, домен класса Работа:Grails belongsTo либо класс

abstract class Job { 
    String jobId 
    String jobName 
    String jobNotes 
} 

Тогда у меня есть эти два класса домена задачи и Habit, оба из которых унаследовать класс работы:

class Task extends Job{ 
    Date deadline 
    int completionTime 
} 

class Habit extends Job{ 
    Date rangeStart 
    Date rangeEnd 
} 

Теперь обе задачи и привычки имеют одну или несколько подзадач. Теперь моя проблема в том, что я хочу, чтобы SubTasks принадлежала либо Task, либо Habit, которые являются и подклассами Job. Я пробовал это сделать, но не работал:

class SubTask { 
    static belongsTo = {motherJob : Job} 
} 

Помогите мне?

ответ

0

Это как раз у меня на голове, но «принадлежит» больше относится к отношениям внешнего ключа в модели реляционной базы данных, чем к объектно-ориентированной модели подкласса/суперкласса.

Если вам нужны подклассы для совместного использования подобного типа по соображениям дизайна, вы могли бы реализовать их как «JobBehaviour».

Извините, если это не то, о чем вы думаете.

+0

Я забыл упомянуть, что оба класса в моем вопросе расширяют абстрактный класс Job. как я могу использовать attribTo, чтобы я мог заставить подзадачу принадлежать либо Task, либо Habit? Благодарю. – dagitab

+0

Попробуйте переместить Job в каталог доменов и используйте таблицу для стратегии inerentance подкласса (если вы хотите одну таблицу на домен), а затем сохраните ее static belongsTo = [motherJob: Job] –

0

Используйте это в суперкласса для создания различных таблиц:

static mapping = { 
    tablePerHierarchy false 
} 

Теперь вы можете использовать FK свободно подклассов.

Смежные вопросы