Extending hibernate entities with annotation

emre picture emre · Feb 10, 2011 · Viewed 24.8k times · Source

i need to extend an entity, with the same characteristics without using abstract classes.

can i code something like below?

@Entity
@Table(name="ABC")
@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1)
public class Abc {
.. // define members
}

@Entity
@Table(name="EX_ABC")
public class ExAbc extends Abs {
.. // define extras..
}

thx in advance

Answer

Hons picture Hons · Feb 10, 2011

Yes, this one works without any problems. However you should have a look at the inheritance annotation.

What's the problem: You have a table "Abc" which contains field1,filed2; Then you have ExAbc which contains the fields of "Abc" and in adition field3. Now, if you think in terms of Databases, what should that system do with these two classes? Put them into a single table letting field3=null for all rows of type "Abc"? or put them into two different tables? or put the common fields in one table and create a second one for the additional filed3?

Each solution has its advantages and disadvantages as you can read in the link i posted, then its up to your situation to decide which is the best way.

(Default I think is the joined strategy, however I would not count on that being so for every database)