Just for the records, TWIMC :-)
I really was surprised to find this behavior of hibernate generating
a "hibernate_sequence" on MySQL, where the autoincrement is IMHO the
most simple and elegant way to create/use a technical primary key -
which is in the end the reason for the initially desribed behavior
of the incrementing id from Ryan.
(Similar to the discussion on "Serializeable not getting a default
serialVersionUID" the question is: should a tool like Forge provide
a functional core to build on or should it "evangelize" a certain -
debatable - implementation practice.)
In this case the reason for the discussed behavior is the new
AnnotationMapping introduced in Hibernate.
See: 5.1.2.2. Identifier
generator in
http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/mapping.html
private static String generatorType(GenerationType
generatorEnum, Mappings mappings) {
boolean useNewGeneratorMappings =
mappings.useNewGeneratorMappings();
switch ( generatorEnum ) {
case IDENTITY:
return "identity";
case AUTO:
return useNewGeneratorMappings
?
org.hibernate.id.enhanced.SequenceStyleGenerator.class.getName()
: "native";
The old mapping "native" would have been the mapping causing the use
of "auto_increment", if available.
So there would be two possibilities to react to the issue per
default:
- place a property in persistence.xml:
<property
name="hibernate.id.new_generator_mappings" value="false"/>
- set GenerationType.IDENTITY per default
thus excluding technically Databases not supporting
autoincrement
Unfortunately both are not really attractive :-/
Thomas