Hibernate - Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
Without code and mappings for your transactions, it'll be next to impossible to investigate the problem.
However, to get a better handle as to what causes the problem, try the following:
- In your hibernate configuration, set hibernate.show_sql to true. This should show you the SQL that is executed and causes the problem.
- Set the log levels for Spring and Hibernate to DEBUG, again this will give you a better idea as to which line causes the problem.
- Create a unit test which replicates the problem without configuring a transaction manager in Spring. This should give you a better idea of the offending line of code.
How to solve Batch update returned unexpected row count from update; actual row count: 0; expected: 1 problem?
The error means that the SQL INSERT statement is being executed, but the ROWCOUNT being returned by SQL Server after it runs is 0, not 1 as expected.
There are several causes, from incorrect mappings, to UPDATE/INSERT triggers that have rowcount turned off.
Your best beat is to profile the SQL statements and see what happens. To do that either turn on nHibernate sql logging, or use the sql profiler. Once you have the SQL you may know the cause, if not try running the SQL manually and see what happens.
Also I suggest you to post your mapping, as it will help people spot any issues.
HIbernate StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
If users clicking rapidly is not expected, strongly recommend you to think of Debouncing API requests in front to skip back to back requests/events.
As you said rightly issues is happening because of inconsistency between what entities loaded to a individual session and current state of database.
This can be solved in multiple ways like using pessimistic locking with (select for update) comes with performance bottle necks, synchronizing the method .... etc
Simplest way to handle this is deleting using a JPA query and ordering at database level, so this always works on the current state of record table.
delete from request where id= (select req.id from request req left join user usr on usr.id = req.userId where usr.userId=? order by req.date LIMIT 1)
Please correct the above query according t your Entity design.
Hibernate - Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
Without code and mappings for your transactions, it'll be next to impossible to investigate the problem.
However, to get a better handle as to what causes the problem, try the following:
- In your hibernate configuration, set hibernate.show_sql to true. This should show you the SQL that is executed and causes the problem.
- Set the log levels for Spring and Hibernate to DEBUG, again this will give you a better idea as to which line causes the problem.
- Create a unit test which replicates the problem without configuring a transaction manager in Spring. This should give you a better idea of the offending line of code.
Related Topics
Java: How to Test on Array Equality
How to Set Same Scale for Domain and Range Axes Jfreechart
How to Prevent Parameter Binding from Interpreting Commas in Spring 3.0.5
How to Use the Command Update-Alternatives --Config Java
Comparing Date Strings in Java
Java Regex - Overlapping Matches
Why Should I Care That Java Doesn't Have Reified Generics
Is Autoboxing Possible for the Classes I Create
Java: Exceptions as Control Flow
Why Are Exceptions Not Checked in .Net
Foreach VS Foreachordered in Java 8 Stream
Differencebetween Declaration and Definition in Java
Permutation Algorithm Without Recursion? Java
Automatic Reserved Word Escaping for Hibernate Tables and Columns
Javafx: "Toolkit" Not Initialized When Trying to Play an Mp3 File Through Mediaplayer Class