<style>
/* Changing the layout to use less space for mobiles */
@media screen and (max-device-width: 480px), screen and (-webkit-min-device-pixel-ratio: 2) {
#email-body { min-width: 30em !important; }
#email-page { padding: 8px !important; }
#email-banner { padding: 8px 8px 0 8px !important; }
#email-avatar { margin: 1px 8px 8px 0 !important; padding: 0 !important; }
#email-fields { padding: 0 8px 8px 8px !important; }
#email-gutter { width: 0 !important; }
}
</style>
<div id="email-body">
<table id="email-wrap" align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#f0f0f0;color:#000000;width:100%;">
<tr valign="top">
<td id="email-page" style="padding:16px !important;">
<table align="center" border="0" cellpadding="0" cellspacing="0" style="background-color:#ffffff;border:1px solid #bbbbbb;color:#000000;width:100%;">
<tr valign="top">
<td bgcolor="#3e4c4e" style="background-color:#3e4c4e;color:#ffffff;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;line-height:1;"><img src="https://www.jboss.org/dms/hibernate/images/jira/jiraheader_hibernate.png" alt="" style="vertical-align:top;" /></td>
</tr><tr valign="top">
<td id="email-banner" style="padding:32px 32px 0 32px;">
<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="width:100%;">
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;padding:0;">
<img id="email-avatar" src="https://secure.gravatar.com/avatar/bfda4c8ce231d748d1123620ca048231?d=mm&s=48" alt="" height="48" width="48" border="0" align="left" style="padding:0;margin: 0 16px 16px 0;" />
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="brmeyer" id="email_brmeyer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=brmeyer" style="color:#6c797f;">Brett Meyer</a>
updated <img src="https://hibernate.atlassian.net/images/icons/issuetypes/improvement.png" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> <a style='color:#6c797f;text-decoration:none;' href='https://hibernate.atlassian.net/browse/HHH-7214'>HHH-7214</a>
</div>
<div id="email-summary" style="font-size:16px;line-height:20px;padding:2px 0 16px 0;">
<a style='color:#6c797f;text-decoration:none;' href='https://hibernate.atlassian.net/browse/HHH-7214'><strong>DiscriminatorValue</strong></a>
</div>
</td>
</tr>
</table>
</td>
</tr>
<tr valign="top">
<td id="email-fields" style="padding:0 32px 32px 32px;">
<table border="0" cellpadding="0" cellspacing="0" style="padding:0;text-align:left;width:100%;" width="100%">
<tr valign="top">
<td id="email-gutter" style="width:64px;white-space:nowrap;"></td>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr valign="top">
<td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;">
<strong style="font-weight:normal;color:#505050;">Change By:</strong>
</td>
<td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;">
<a class="user-hover" rel="brmeyer" id="email_brmeyer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=brmeyer" style="color:#6c797f;">Brett Meyer</a>
(06/May/13 7:28 PM)
</td>
</tr>
<tr valign="top">
<td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 10px 10px 0;white-space:nowrap;">
<strong style="font-weight:normal;color:#505050;">Description:</strong>
</td>
<td style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 10px 0;width:100%;">
<span class="diffcontext">I have an abstract entity with the following annotations:</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br>{code}<br></span>
<span class="diffcontext">@Entity</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">@Table(name = LineBlock.TABLE_NAME)</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">@Inheritance(strategy = InheritanceType.SINGLE_TABLE)</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">@DiscriminatorColumn(name = "blockType", discriminatorType = DiscriminatorType.STRING)</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">public abstract class LineBlock implements Serializable, Visitable {</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br>{code}<br><br></span>
<span class="diffcontext">I have 2 sub entities:</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br>{code}<br></span>
<span class="diffcontext">@Entity</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">@DiscriminatorValue("EMAIL")</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">public class EmailBlock extends LineBlock {</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">@Entity</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">@DiscriminatorValue("EMAIL")</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">public class ArgusBlock extends LineBlock {</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br>{code}<br><br></span>
<span class="diffcontext">Actually it was a mistake i made to not change the discriminator value... But it took me some time to figure out the problem was so easy to solve...</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">The problem is that when i was saving an object refering an ArgusBlock entity, when loading that object, it seems Hibernate took the first block it found with that discriminator value, which in this case was the EmailBlock.</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">I think when a discriminator value is used twice or more, an exception should prevent this "random" behavior".</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">The problem seems to be there:</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">org.hibernate.persister.entity.SingleTableEntityPersister#getSubclassForDiscriminatorValue</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">There is a Map<Discriminator,EntityName> in which we probably try to put twice the same discriminator key, so one value override the other.</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">The problem seems easy to solve and i can try doing it myself. I see 2 possible solutions:</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">- Raise exception when we try to override a key in the map construction</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br></span>
<span class="diffcontext">- Use a multimap and raise exception when accessing the map with multiple values</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br><br><br><br></span>
<span class="diffaddedchars" style="background-color:#ddfade;"><br><br></span>
<span class="diffcontext">Don't really know if it's a bug or improvement, but i think it's always better to be fail-fast in such cases</span>
<span class="diffremovedchars" style="background-color:#ffe7e7;text-decoration:line-through;"><br></span>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td><!-- End #email-page -->
</tr>
<tr valign="top">
<td style="color:#505050;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:10px;line-height:14px;padding: 0 16px 16px 16px;text-align:center;">
This message is automatically generated by JIRA.<br />
If you think it was sent incorrectly, please contact your JIRA administrators<br />
For more information on JIRA, see: <a style='color:#6c797f;' href='http://www.atlassian.com/software/jira'>http://www.atlassian.com/software/jira</a>
</td>
</tr>
</table><!-- End #email-wrap -->
</div><!-- End #email-body -->