How to change Hibernate´s auto persistance strategy
Posted
by Kristofer Borgstrom
on Stack Overflow
See other posts from Stack Overflow
or by Kristofer Borgstrom
Published on 2010-05-21T20:00:12Z
Indexed on
2010/05/21
20:20 UTC
Read the original article
Hit count: 211
I just noted that my hibernate entities are automatically persisted to the database (or at least to cache) before I call any save() or update() method. To me this is a pretty strange default behavior but ok, as long as I can disable it, it´s fine.
The problem I have is I want to update my entity´s state (from 1 to 2) only if the entity in the database still has the state it had when I retrieved [1] (this is to eliminate concurrency issues when another server is updating this same object). For this reason I have created a custom NamedQuery that will only update the entity if state is 1. So here is some pseudo-code:
//Get the entity
Entity item = dao.getEntity();
item.getState(); //==1
//Update the entity
item.setState(2); //Here is the problem, this effectively changes the state of my entity braking my query that verifies that state is still == 1.
dao.customUpdate(item); //Returns 0 rows changes since state != 1.
So, how do I make sure the setters don´t change the state in cache/db?
Thanks, Kristofer
© Stack Overflow or respective owner