it is used hibernate_sequence instead of mySequence (with Oracle and H2)
I have updated the hiberate version from 4.0.1.Final to 5.0.7.Final (porting from Jboss 7 to Wildfly 10)
The hibernate framwork uses hibernate_sequence for the id generation instead of mySequence.
In order to maintain the backward compatibility, hibernate.id.new_generator_mappings is configured as false value.
The id field is annotated with the following JPA API:
The MY_GENERATOR_SEQ sequence is defined with the "INCREMENT BY 1" option.
The problem occurs for both H2 and Oracle DB.
I have analyzed the implementation and I don't know if it could be a BUG of Hibernate or any possible bad configuration i did for the backward compatibility???
Hibernate during server startup gets some initialization:
SequenceStyleGenerator.configure method defines the QualifiedName sequenceName as "hibernate_sequence", because it tried to get the value from the Properties params.
At this point I noticed that the MY_GENERATOR_SEQ sequenceName was present into the Properties params at runtime with the "sequence" key (sequence=MY_GENERATOR_SEQ) but the retrieve strategy (determineSequenceName) needs the "sequence_name" as key.
So the key used to set the sequence name into the Properties params is from the deprecated class org.hibernate.id.SequenceGenerator.SEQUENCE because of hibernate.id.new_generator_mappings=false,
but the SequenceStyleGenerator class needs the org.hibernate.id.enhanced.SequenceStyleGenerator.SEQUENCE_PARAM key in order to get "MY_GENERATOR_SEQ".
1. set on SequenceGenerator allocationSize=1 (without setting hibernate.id.new_generator_mappings=false)
2. create the sequence MY_GENERATOR_SEQ on the DB with INCREMENT BY 50 (without setting hibernate.id.new_generator_mappings=false)
Both the solutions are not applicable into my context.
So the only applicable "solution" is this one:
Extend the Dialect used for Oracle and H2 and override the getNativeIdentifierGeneratorClass method in this way:
H2 and Oracle
It seems fixed with HHH-10876
I can confirm this is also happening (not surprisingly) with 5.0.6.Final
Unfortunately the problem is strongly related to the impossibility of update the Entity classes in my context. The suggested solution works and also the posted potential solution 1 and 2, but I can't update the Entities.
An easier workaround is to use:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myGenerator")