Java 使用抽象类(不带表)持久化层次结构的最佳方法是什么

Java 使用抽象类(不带表)持久化层次结构的最佳方法是什么,java,hibernate,jpa,persistence,Java,Hibernate,Jpa,Persistence,我有一个简单的继承模型: public abstract class Base { int id; string name; } public class Derived1 extends Base { int valueD1; } public class Derived2 extends Base { int valueD2; } 我应该如何映射类(带有JPA注释),这样我就可以为Derived1和Derived2创建单独的表(每个具体类的表),并为Base

我有一个简单的继承模型:

public abstract class Base {
    int id;
    string name;
}

public class Derived1 extends Base {
   int valueD1;
}

public class Derived2 extends Base {
   int valueD2;
}
我应该如何映射类(带有JPA注释),这样我就可以为Derived1和Derived2创建单独的表(每个具体类的表),并为Base创建no


我应该使用@MappedSuperclass,还是@Embeddeble(跳过继承),还是@Inheritation?

使用@MappedSuperclass,并为每个实体定义不同的表,IMHO


但这取决于您是否最有可能查询父类,或者是否使用两个派生实体本身,而不需要查询两个表。

映射的超类是否可以具有主键ID?不要这样做,你将来会遇到问题。@RomanC你是什么意思?我的意思是,如果你想要每个具体类有一个表,那么你就不需要抽象类。@RomanC那么你有什么建议?超类在JavaI中很方便,我不记得我以前遇到过什么样的问题,但是我把id移到了子类中,问题就解决了。