Należy pamiętać, że Hibernate jest warstwą trwałości i musi być w stanie śledzić położenie obiektu w bazie danych. Więc kiedy robi wstawkę, faktycznie będzie musiał zapytać licznik automatycznego przyrostu, aby zobaczyć, jaki powinien być następny identyfikator. Następnie wstawia identyfikator do obiektu i wstawia obiekt do bazy danych. Tak więc, aby hibernacja mogła zostać wykonana we wstawieniu, musi najpierw wykonać wybór (chyba że używasz jakiegoś identyfikatora GUID generowanego przez aplikację). Używając automatycznego przyrostu mySQL, użyj generatora „tożsamości”.
Wyjaśnienie różnych generatorów:
http://www.roseindia.net/hibernate/hibernateidgeneratorelement.shtml
Fragment kodu zahibernowanego XML:
<id name="id" type="long" unsaved-value="null" >
<column name="uid" not-null="true"/>
<generator class="identity"/>
</id>