<!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: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5"> 
            <!-- header here --> 
            <tbody>
                <tr> 
                    <td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px"> 
                        <table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/2d08b9a73e22d20401282aa1c8d66102?s=48&amp;d=https%3A%2F%2Fhibernate.atlassian.net%2Fsecure%2Fuseravatar%3FownerId%3Dcrancran%26avatarId%3D18440%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td> 
                                    <td id="header-text-container" valign="middle" style="padding: 0; 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="crancran" id="email_crancran" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=crancran" style="color:#6c797f;; color: #3b73af; text-decoration: none">Chris Cranford</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HHH-10667" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-a7bc5346-5cdd-43bb-bbae-2c7d70e0a129" height="16" width="16" border="0" align="absmiddle" alt="Bug"> HHH-10667</a> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="email-content-container" style="padding: 0; 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: 0; mso-table-rspace: 0; 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: 0; 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">&nbsp;</td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; 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: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td style="vertical-align: top;; padding: 0; 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-10667" style="color: #3b73af; text-decoration: none">Re: Envers cannot support @IdClass referencing foreign entity identifier</a> </span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" style="padding: 0; 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; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff"> 
                                        <table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; 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: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">In order to fix this issue we are ultimately going to need to redesign how the <tt>IdMapper</tt> and implementations work.</p> <p style="margin: 10px 0 0">Lets take the following example:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
@Entity
@IdClass(SomeOtherEntityCId.class)
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>SomeOtherEntityC {
  @Id
  @ManyToOne
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityA a;
  @Id
  @ManyToOne
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityB b;
}

<span class="code-keyword" style="color: #000091">class </span>SomeOtherEntityCId <span class="code-keyword" style="color: #000091">implements</span> Serializable {
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityA a;
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityB b;
}
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">This effectively would generate an XML composite-id mapping of:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
  &lt;composite-id name=<span class="code-quote" style="color: #009100">"originalId"</span>&gt;
   &lt;key-many-to-one name=<span class="code-quote" style="color: #009100">"a"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.test.integration.ids.idclass.SomeOtherEntityA"</span> foreign-key=<span class="code-quote" style="color: #009100">"none"</span> /&gt;
   &lt;key-many-to-one name=<span class="code-quote" style="color: #009100">"b"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.test.integration.ids.idclass.SomeOtherEntityB"</span> foreign-key=<span class="code-quote" style="color: #009100">"none"</span> /&gt;
   &lt;key-many-to-one type=<span class="code-quote" style="color: #009100">"integer"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.enhanced.SequenceIdRevisionEntity"</span> name=<span class="code-quote" style="color: #009100">"REV"</span> /&gt;
  &lt;/composite-id&gt;
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">As seen here, the composite-id references the concrete instance types of the association. When done this way, Envers doesn't treat this mapping any differently than it would if it were an <tt>@EmbeddedId</tt> despite the fact the mapping uses an <tt>@IdClass</tt> references container.</p> <p style="margin: 10px 0 0">The problem arises with the following scenario:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
@Entity
@IdClass(SomeOtherEntityCId.class)
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>SomeOtherEntityC {
  @Id
  @ManyToOne
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityA a;
  @Id
  @ManyToOne
  <span class="code-keyword" style="color: #000091">private</span> SomeOtherEntityB b;
}

<span class="code-keyword" style="color: #000091">class </span>SomeOtherEntityCId <span class="code-keyword" style="color: #000091">implements</span> Serializable {
  <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">Integer</span> a;
  <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">Integer</span> b;
}
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">Again in this scenario this effectively generates an XML composite-id mapping of:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
  &lt;composite-id name=<span class="code-quote" style="color: #009100">"originalId"</span>&gt;
   &lt;key-many-to-one name=<span class="code-quote" style="color: #009100">"a"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.test.integration.ids.idclass.SomeOtherEntityA"</span> foreign-key=<span class="code-quote" style="color: #009100">"none"</span> /&gt;
   &lt;key-many-to-one name=<span class="code-quote" style="color: #009100">"b"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.test.integration.ids.idclass.SomeOtherEntityB"</span> foreign-key=<span class="code-quote" style="color: #009100">"none"</span> /&gt;
   &lt;key-many-to-one type=<span class="code-quote" style="color: #009100">"integer"</span> class=<span class="code-quote" style="color: #009100">"org.hibernate.envers.enhanced.SequenceIdRevisionEntity"</span> name=<span class="code-quote" style="color: #009100">"REV"</span> /&gt;
  &lt;/composite-id&gt;
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">The problem arises when the audit event fires Envers is given an identifier of <tt>SomeOtherEntityCId</tt> type that has numeric primary key values. In order to save the audit entry, we need to come up with a way that allows us to lookup the appropriate association instance based on the supplied primary key or at the very least acquire that reference from the entity itself. Presently with how the methods are defined, this just isn't clearly possible.</p> <p style="margin: 10px 0 0">We'll also need to check on the read-side and make sure during hydration that we handle populating the <tt>@Id</tt> associations correctly.</p> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand " style="padding: 0; 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"> <script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "EmailMessage",
  "description": "View Issue",
  "potentialAction": {
    "@type": "ViewAction",
        "target": "https://hibernate.atlassian.net/browse/HHH-10667?inbox=true&focusedCommentId=101437&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-101437",
    "name": "View Comment"
      },
  "publisher": {
    "@type": "Organization",
    "name": "Atlassian",
    "url": "https://www.atlassian.com"
  }
}
</script> 
                                        <table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; 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: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0"> 
                                                        <table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                                            <tbody>
                                                                <tr> 
                                                                    <td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-10667#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-0e292572-b0b6-4ae7-93b7-f6a746de718f" 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: 0; 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-10667#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: 0; 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">&nbsp;</td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
                <tr> 
                    <td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px"> 
                        <table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                            <tbody>
                                <tr> 
                                    <td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; 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"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&amp;referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&amp;ct=EmailNotificationLink&amp;mt=8" style="color: #3b73af; text-decoration: none">iOS</a> 
                                        <hr> </td> 
                                </tr> 
                                <tr> 
                                    <td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; 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">(v1001.0.0-SNAPSHOT#100081-<span title="75480baa6208497968b3f3d28fb225dd310b858f" data-commit-id="75480baa6208497968b3f3d28fb225dd310b858f}">sha1:75480ba</span>)</span> </td> 
                                    <td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top"> 
                                        <table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <tbody>
                                                <tr> 
                                                    <td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-c1ed62a3-6f60-41a2-aad6-6f12e321f906" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>   
    
<img src="https://u4043402.ct.sendgrid.net/wf/open?upn=YNXLe5Uzuivj8jGpuXra04BSJ-2BS7raa1puTAtyVUP-2F0UG25sB-2BHToWWBMcbXwnNUMRwDj8dcgaVmk8c1-2Bd8VqWxQpHsOWUttTsfiBihKxPR4Nn3pbsutRCaH4Zb44dthqNJ1qP5JdIwn4ga9ANndy6JVYcf3cjegZMrUY-2FEEW9E-2FhxOO3NPB2pVdubSD4yxbNMppXxh0WczomSOAbdAKCLa92vqZSAjMdGNC3FqgF2PUcJe-2BonordgPsznvM-2BZHEoC79lsstK61nxomNY3TQ4Qm7kjJb9V3H25bBE4GQ2byvdpLbz2qod79Kh-2BFndUZvItypaFT1MJO5ElgvPTIHmlWbLqxE9IJZRas8vp8nzISfloZk0rZMb2yZYvVhwCF0sQd3FyhcLsK8yr3uUwsCkvb12QWaxHRpMjv9cv3d7mUvopLDw56Wrq8OLdyHS-2Fa8RqTtPxrc7xX8mV5GzuhS2g-3D-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
</body>
</html>