<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="cid:jira-generated-image-avatar-25472604-d77b-4d77-8a9c-ed052f10ae46" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0px; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="galant007" id="email_galant007" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=galant007" style="color:#6c797f;; color: #3b73af; text-decoration: none">John Matt</a> <strong>updated</strong> an issue </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0px; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0px; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<td class="page-title-pattern-first-line " style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HHH" style="color: #3b73af; text-decoration: none">Hibernate ORM</a> / <a href="https://hibernate.atlassian.net/browse/HHH-10501" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-d0feb725-530d-4bbd-aa15-86dda4b498b2" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-10501" style="color: #3b73af; text-decoration: none">HHH-10501</a> </td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0px; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-10501" style="color: #3b73af; text-decoration: none">why NonBatchingBatcher doesn’t re throw a StaleObjectStateException</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Change By:</th>
<td style="padding: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="galant007" id="email_galant007" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=galant007" style="color:#6c797f;; color: #3b73af; text-decoration: none">John Matt</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 5px; padding-bottom: 10px" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> <span class="diffcontext">Got questions in hibernate code and trying to understand why it is so. In short, the OptimisticLockException is thrown without the entity in it when I upgraded to Hibernate 5x (5.0.4.Final) from 3x ( 3.3.2.GA) version. <br><br>The questions upfront without any background information:<br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">_{color:#59afe1}</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext">1.why "jdbcBatchVersionedData" enabled by default to true in latest versions ? And from which Hibernate version onwards?<br>2.Why the non NonBatchingBatcher#expectation.verifyOutcome() doesn’t re throw a StaleObjectStateException with entity information even though it calls same "verifyOutcome()" as in "AbstractEntityPersister#check()</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">"{color}_</span> <span class="diffaddedchars" style="background-color:#ddfade;">*</span> <span class="diffcontext"><br><br>Let me explain my observations and please correct me if my below understanding is wrong.<br><br>So , my application test case is to update a versioned entity with an invalid version. I just change the version in between on purpose and it is excepted to fail with a zero row count. In our scenario it will throw a "StaleStateException" from Expectation#checkNonBatched() with a message: <br>"Unexpected row count: 0 ; expected: 1"<br>This exception eventually get wrapped in OptimisticLockException and I am good with that, I get the entity from exception and able to perform necessary assertions on that. <br><br>Now, after uplifting to Hibernate 5x, its thrown from Expectation#checkBatched(). With message :<br>"Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1".<br>Reason being hibernate decides to switch to batch mode for versioned entity update(AbstractEntityPersister#isBatchable()). The single deciding factor in my flow is jdbcBatchVersionedData is turned on by default to true in 5x(5.0.4.Final). But it is false by default in version 3x (3.3.2.GA). Here is the snippet from both versions for easy reference.<br><br>SettingsFactory in Version 3.3.2.GA:<br><br>{code:java}<br>boolean jdbcBatchVersionedData = PropertiesHelper.getBoolean(Environment.BATCH_VERSIONED_DATA, properties, false);<br>{code}<br><br><br>SessionFactoryOptionsStateStandardImpl in 5.0.4.Final :<br><br>{code:java}<br>this.jdbcBatchVersionedData = ConfigurationHelper.getBoolean( BATCH_VERSIONED_DATA, configurationSettings, true );<br>{code}<br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">*{color:#59afe1}</span> <span class="diffcontext"> So first question is why this enabled by default to true in latest versions ? And from which Hibernate version onwards?</span> <span class="diffaddedchars" style="background-color:#ddfade;">{color}*</span> <span class="diffcontext"><br><br>Next question is about entity not attached in the exception. Now, it is about to decide batching in AbstractEntityPersister#update(), the flow goes to <br><br><br>{code:java}<br>if ( useBatch ) {<br> session.getBatcher().addToBatch( expectation );<br> return true;<br>}<br>else {<br> return check( update.executeUpdate(), id, j, expectation, update );<br>}<br><br>{code}<br><br>If useBatch is false the flow goes to "check()" and "expectation.verifyOutcome()" is getting called. Here it will check StaleStateException and StaleObjectStateException re-thrown with entity name and identifier. This is what is happening for my test with hibernate 3X<br><br>If it’s a batch the call goes to "NonBatchingBatcher", because I didn’t specify any batch size in my environment and its zero by default. Then the same "expectation.verifyOutcome()" in addToBatch() throws the StaleStateException, from checkBatched(). The exception propagates and it will get wrapped in AbstractEntityManagerImpl#wrapStaleStateException(). But without any entity information.<br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">{color:#59afe1}*</span> <span class="diffcontext">So why the non NonBatchingBatcher#expectation.verifyOutcome() doesn’t re throw a StaleObjectStateException with entity information even though it calls same "verifyOutcome()" as in "check()"? What are my options here to deal with this situation if I need the entity attached in the exception?</span> <span class="diffaddedchars" style="background-color:#ddfade;">*{color}</span> <span class="diffcontext"><br><br>Appreciate your attention and thank you for any help.<br></span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-10501#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-f99dff1c-73c8-412d-ab55-9280f6112437" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HHH-10501#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0px; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian JIRA <span id="footer-build-information">(v7.1.0-OD-05-006#71001-<span title="081cc1af5ccca4c5c6d6a6b62118b45ebbf699ab" data-commit-id="081cc1af5ccca4c5c6d6a6b62118b45ebbf699ab}">sha1:081cc1a</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0px; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-87607fda-a601-408b-90d0-2e0a525d599a" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
</body>
</html>