Though I posted this issue before let me rephrase again with some example. Lets
say Customer and Order has one to many relationship. Assume Customer C1 has 2
Orders O1 and O2. In Customer entity I defined collection of Orders and
annotated it as OneToMany. In Orders I defined Customer and annotated it as
ManyToOne and JoinColumn. So code looks something like this
In Customer
|
| private List<Orders> orderList = new ArrayList<Orders>();
|
| @OneToMany(mappedBy="customer", fetch=FetchType.EAGER,
cascade=CascadeType.ALL)
| public List<Orders> getOrderList()
| {
| return orderList;
| }
|
| @Version
| @Column(name="Version", insertable=false, updatable=false)
| public int getVersion()
| {
| return version;
| }
|
In Order
|
| private Customers customer;
| @ManyToOne()
| @JoinColumn(name="CustomerID")
| public Customers getCustomer()
| {
| return customer;
| }
|
| @Version
| @Column(name="Version", insertable=false, updatable=false)
| public int getVersion()
| {
| return version;
| }
|
|
As it is clear from the code that we have version field but we allow hibernate
to use version for validation but updation of it is done through database
trigger.
Now when I call em.remove(customer) i got an exception :
StaleObjectStateException: Row was updated or deleted by another transaction
(or unsaved-value mapping was incorrect)
When i dig into this issue I found out that when I call em.remove(customer), em
first calls update on Customer and then delete of all child(Order in this case)
and then parent (Customers). But since update gets called before delete which
makes Version number of Customer record is incremented by 1 in database through
db trigger. This makes deletion fails due to version conflict.
Any help will be really appreciated.
Thnx
V
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3971150#3971150
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3971150
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user