为什么我的所有实体都不应该是一个通用ModelEntity对象的子类?
@Entity
public class ModelEntity {
@Id Long id;
}
@Subclass
public class User extends ModelEntity {
@Index
String username;
}
优点很明显:所有实体都有共同的代码(如id,date,getKey) 你能想到劣势吗?
答案 0 :(得分:1)
拥有一个公共基类可能会有所帮助,但您几乎肯定不希望它成为多态实体层次结构的一部分。不要将@Subclass
用于此目的;你不需要它:
public class ModelEntity {
@Id Long id;
}
@Entity
public class User extends ModelEntity {
@Index
String username;
}
答案 1 :(得分:0)
嗯,jpa抽象的一大优势是在持久层和业务逻辑之间保持绝缘。如果您为所有实体使用隐藏ID,那么您就放弃了。
例如,您可以在实现中使用值对象,以便实际隐藏实体的@Id部分。你可以使用一个完全不同的@Id用于"真实"实体。