it is used hibernate_sequence instead of mySequence (with Oracle and H2)

Description

I have updated the hiberate version from 4.0.1.Final to 5.0.7.Final (porting from Jboss 7 to Wildfly 10)

Problem:
The hibernate framwork uses hibernate_sequence for the id generation instead of mySequence.

Hibernate configuration:
In order to maintain the backward compatibility, hibernate.id.new_generator_mappings is configured as false value.

Entity configuration:
The id field is annotated with the following JPA API:

DB configuration:
The MY_GENERATOR_SEQ sequence is defined with the "INCREMENT BY 1" option.

The problem occurs for both H2 and Oracle DB.

QUESTION:
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???

Analysis:
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".

Potential solutions:
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:

Environment

H2 and Oracle

Status

Assignee

Unassigned

Reporter

Pasquale Vitale

Fix versions

None

Labels

backPortable

None

Suitable for new contributors

None

Requires Release Note

None

Pull Request

None

backportDecision

None

Components

Affects versions

Priority

Minor
Configure