如何通过超类和另一个模型之间的关联在 ActiveJDBC 中实现继承模型?

How to implement inherited models in ActiveJDBC with associations between superclass and another model?

我想构建这样的东西:

abstract class Owner extends Model {}
class User extends Owner {}
class Group extends Owner {}
class Thing extends Model {} 

其中每个 Thing 都有一个且只有一个 Owner,可以是 GroupUser。 这怎么可能?我是否必须让 Owner 不抽象才能让 ActiveJDBC 将 things-table 中的 owner_id-column 映射到所有者?但是它如何确定我们拥有哪种所有者,正如 http://javalite.io/inheritance 所说的那样,单一 table 继承未在 ActiceJDBC 中实现。

您需要使用 Polymorphic Associations。继承和所有权是有区别的。

A​​ctiveJDBC 继承仅限于将通用功能传递给子classes。然后你需要使用关系来创建 "A has many B" 等,而 Polymorphic Associations 似乎是你最好的选择。

因此,在您的情况下,User 和 Group 将是 Thing 的多态父级。然后,您可以选择创建一个单独的 class 所有者(仅当他们共享某些功能时)。

所以..您将拥有三个表:USERS、GROUPS、THINGS。