Specifying distinct sequence per table in Hibernate on subclasses Specifying distinct sequence per table in Hibernate on subclasses postgresql postgresql

Specifying distinct sequence per table in Hibernate on subclasses


Have you tried doing it this way ?

@MappedSuperclasspublic abstract class DataObject implements Serializable {    @Id     @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "idgen")    @Column(name = "id")    private int id;}@Entity@SequenceGenerator(initialValue = 1, name = "idgen", sequenceName = "entityaseq")@Table(name = "entity_a")public class EntityA extends DataObject { }@Entity@SequenceGenerator(initialValue = 1, name = "idgen", sequenceName = "entitybseq")@Table(name = "entity_b")public class EntityB extends DataObject {}

I'm sorry I don't have the required environment to test it right now but I'll try it later.


We use this in the abstract superclass of all of our JPA entities:

@Id@GeneratedValue(generator = "pooled")@GenericGenerator(name = "pooled", strategy = "org.hibernate.id.enhanced.TableGenerator", parameters = {        @org.hibernate.annotations.Parameter(name = "value_column_name", value = "sequence_next_hi_value"),        @org.hibernate.annotations.Parameter(name = "prefer_entity_table_as_segment_value", value = "true"),        @org.hibernate.annotations.Parameter(name = "optimizer", value = "pooled-lo"),        @org.hibernate.annotations.Parameter(name = "increment_size", value = "100")})private Long id;

It's a bit verbose, but it allows setting the prefer_entity_table_as_segment_value which means you don't need to repeat the id field or the generator annotations in the subclasses.


IHMO there is better way to do this:

@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private int id;

It works in my app.