When using a SequenceStyleGenerator backed by a database table (using TableStructure) each entity using the same table will cause an extra row to be inserted to the table (when using SchemaExport or hbm2ddl). This is because a generator is initialized for each entity, and every time registerExportables is called, which causes an additional InitCommand to be registered. Sample mapping:
<class name="org.hibernate.bugs.TestBean" entity-name="TestBean1">
<id name="id">
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<param name="force_table_use">true</param>
</generator>
</id>
</class>
<class name="org.hibernate.bugs.TestBean" entity-name="TestBean2">
<id name="id">
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<param name="force_table_use">true</param>
</generator>
</id>
</class>
Causes:
create table hibernate_sequence (
next_val bigint
)
...
insert into hibernate_sequence values ( 1 )
insert into hibernate_sequence values ( 1 )
|