Я хотел бы построить что-то вроде этого:Как реализовать унаследованные модели в ActiveJDBC с ассоциациями между суперклассом и другой моделью?
abstract class Owner extends Model {}
class User extends Owner {}
class Group extends Owner {}
class Thing extends Model {}
где каждый Thing
имеет один и только один Owner
, который может быть Group
или User
. Как это возможно? Должен ли я сделать Владелец не абстрактным, чтобы ActiveJDBC сопоставлял owner_id-column в таблице вещей с владельцем? Но как он определяет, какой у нас владелец, как http://javalite.io/inheritance говорит, что наследование отдельных таблиц не реализовано в ActiceJDBC.
Спасибо за ответ. Недостатком этого решения является то, что Thing может иметь группу _and_ пользователя как родителя вместо уникального владельца. Может быть, это может быть обработано с помощью валидации - пока я еще не прошел проверку ActiveJDBC. Но преимущество в том, что он должен работать :-) Я попробую. – Mischa
Кажется, очень медленно я получаю это: у Тига не может быть обоих родителей, поскольку специальные колоды предотвращают это. В таблице есть только один родительский идентификатор. Большой! – Mischa
Теперь он работает как шарм. Я создал владельца класса, потому что я не всегда знаю, какой именно тип. Thing поэтому имеет этот метод: public Owner getOwner() { if (this.getString ("PARENT_TYPE"). EndsWith ("Group")) { return this.parent (Group.class); } return this.parent (User.class); } – Mischa