Objectify - 我应该创建一个实体 super class 吗?

Objectify - should I create an entity super class?

有什么理由不让我的所有实体都成为一个通用 ModelEntity 对象的子类?

@Entity
public class ModelEntity {
    @Id Long id;
}

@Subclass
public class User extends ModelEntity {
    @Index
    String username;
}

优点很明显:所有实体都有通用代码(如 id、date、getKey) 你能想到缺点吗?

好吧,jpa 抽象的一大优点是在持久层和业务逻辑之间进行隔离。如果您为所有实体使用隐藏 ID,您就放弃了。

例如,您的实现可以有一个值对象,这样您实际上隐藏了实体的@Id 部分。您可以为 "real" 个实体使用完全不同的 @Id。

拥有一个公共基础 class 可能会有所帮助,但您几乎肯定不想使其成为多态实体层次结构的一部分。不要为此目的使用 @Subclass;你不需要它:

public class ModelEntity {
    @Id Long id;
}

@Entity
public class User extends ModelEntity {
    @Index
    String username;
}