Force Hibernate Insert Without Select Statements
You can use the persist() method rather than save().
https://forum.hibernate.org/viewtopic.php?f=1&t=1011405
However, unlike save(), persist() does not guarantee that the identifier value will be set immediately on the persisted instance.
https://forum.hibernate.org/viewtopic.php?f=1&t=951275
(and you can jump to christian's last post in the thread)
Hibernate is trying to determine if the object is transient or not, so is performing a SELECT
before INSERT
. You might be able to adapt this answer from Hibernate OneToOne mapping executes select statement before insert; not sure why to avoid the SELECT
.
Or, I remember a post in a forum about overriding the version
column that hibernate uses in the transient check (and for optimistic locking). I'll edit this answer when I find it.