4

I'm using Hibernate JPA.

Suppose I have these classes:

AbstractPerson |--> ConcreteEmployee |--> ConcreteCustomer 

Is there any way to make the concrete classes have independent IDs?

I'm using InheritanceType.TABLE_PER_CLASS.

2
  • In at least one of the concrete classes, I'd like to have autoincremental numbers, like a customer number, independent of the 'shared' ID. This is for a university assignment, so opinions on why this could be a bad idea are welcome. :P Commented Jul 1, 2010 at 13:57
  • 1
    It is possible with the Mapped superclass inheritance. Commented Jul 30, 2014 at 11:46

1 Answer 1

11

From the Hibernate Annotations Reference Guide:

2.2.4.1. Table per class

This strategy has many drawbacks (esp. with polymorphic queries and associations) explained in the JPA spec, the Hibernate reference documentation, Hibernate in Action, and many other places. Hibernate work around most of them implementing this strategy using SQL UNION queries. It is commonly used for the top level of an inheritance hierarchy:

@Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) public class Flight implements Serializable { ... } 

This strategy supports one-to-many associations provided that they are bidirectional. This strategy does not support the IDENTITY generator strategy: the id has to be shared across several tables. Consequently, when using this strategy, you should not use AUTO nor IDENTITY.

So I'm afraid what you want is not supported (and I suggest to use GenerationType.TABLE).

Sign up to request clarification or add additional context in comments.

1 Comment

Ah, thanks. I'll have to generate the customer number myself then.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.