So, I'm pretty new to Hibernate and I have a problem.

I have an abstract class (the super-class, class Super), and 5 subclasses which should use the proprieties from the class Super and add a new propriety (a new column)

So how can I do this? Should I extend the class Super from java, or it's enough to join the classes using a JPA annotation.

Here is the second problem. How can I have 1 table for 2 classes. Someone (smarter than me) told me to use the @JoinTable, but form my searches with google, I think I need to use @Inheritance(strategy=InheritanceStrategy.JOINED)

Can I use the @JoinTable too?

No correct solution


Yours is a case of inheritance:

  1. add the @Inheritance(stretegy=InheritanceStrategy.SINGLE_TABLE) annotation on your Super
  2. add the @DiscriminatorColumn annotation (and setting its attributes name and discriminatorType) (again on the Super)
  3. on each subclass extend the Super, and add the annotation @DiscriminatorValue, with different value for each of the subclasses.

If you are new to Hibernate, you should read its documentation. Inheritance strategies are explained here and using annotations to express inheritance strategy is explained here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow