<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;">
<div id="email-action" style="padding: 0 0 8px 0;font-size:12px;line-height:18px;">
<a class="user-hover" rel="w_c_smith" id="email_w_c_smith" href="https://hibernate.onjira.com/secure/ViewProfile.jspa?name=w_c_smith" style="color:#6c797f;">Christopher Smith</a>
edited a comment on <img src="https://hibernate.onjira.com/images/icons/newfeature.gif" height="16" width="16" border="0" align="absmiddle" alt="New Feature"> <a style='color:#6c797f;text-decoration:none;' href='https://hibernate.onjira.com/browse/HHH-7635'>HHH-7635</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.onjira.com/browse/HHH-7635'><strong>Allow "mappedBy" to reference attribute defined on superclass of "targetEntity"</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 colspan="2" style="color:#000000;font-family:Arial,FreeSans,Helvetica,sans-serif;font-size:12px;padding:0 0 16px 0;width:100%;">
<div class="comment-block" style="background-color:#edf5ff;border:1px solid #dddddd;color:#000000;padding:12px;"><p>My apologies if I misassigned the priority; I tagged it that high because a seemingly-mild refactor caused the SessionFactory to blow up with no clear resolution.</p>
<p>Thanks for addressing the issue, but I'm having difficulty understanding the background. What do you mean by a "reflexive" relationship--that it's directly between instances of two concrete classes? JPA 2.0 unfortunately states that "relationships are polymorphic" but offers no further detail on what it means by that. Also, I note your quotes on "foreign key", but I don't think I follow; the foreign key is Customer.id, and restricting the query to SpecialOrders is just an extra join (probably not even additional WHERE, since Hibernate doesn't use a discriminator column for type determination anyway).</p>
<p>I do understand that typing a relationship onto a subclass requires additional join information, but (a) it seems that at least a hand-written version of the join starting with the subclass and left-joining onto the superclass is straightforward to model, and (b) JPA already supports this type of "relationship" implicitly by using the TYPE operator, so all of of the information required to execute the join has to be present anyway. </p>
<p>On the other hand, moving the customer field onto the subclasses (which we immediately considered as a workaround) thoroughly breaks JPA field traversal, because we can no longer say <div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">SELECT p FROM Payment p where p.forOrder.customer = :thisCustomer</pre>
</div></div> Additionally, the whole value of using inheritance is that common logic (e.g., the customer can't be reassigned on finalized orders) can be written on the superclass and not copied to the subclasses. The workaround that we will probably use if continuing with Hibernate is to replace the relationship fields with type-restricting queries, but doing so by hand negates a large part of the benefit of an ORM system.</p></div>
<div style="color:#505050;padding:4px 0 0 0;"> </div>
</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 -->