<!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/754e8a43740f217add2548a1d6894960?s=48&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F754e8a43740f217add2548a1d6894960%3Fd%3Dmm%26s%3D48%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="DerEineDa" id="email_DerEineDa" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=DerEineDa" style="color:#6c797f;; color: #3b73af; text-decoration: none">Christian C</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HHH-12436?atlOrigin=eyJpIjoiMTg4MWY1NzFkZTZiNGQ2Njk4NWQwZDFjNDI5NmZhYTUiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-85bf0f46-eb83-4cd2-a319-23c45afc52a1" height="16" width="16" border="0" align="absmiddle" alt="Bug"> HHH-12436</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-12436?atlOrigin=eyJpIjoiMTg4MWY1NzFkZTZiNGQ2Njk4NWQwZDFjNDI5NmZhYTUiLCJwIjoiaiJ9" style="color: #3b73af; text-decoration: none">Re: Attempted to assign id from null one-to-one property</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">I realize that the issue tracker is not a support forum, so I want to thank you for your help!</p> <p style="margin: 10px 0 0">Because this issue is highly visited and even linked from Stackoverflow, please let me show you how I've completely solved the issue for me. Maybe this will be useful for someone visiting later.</p> <p style="margin: 10px 0 0">@Gail Badner <br> Your solution looks nice and will probably work, too. But after further investigating my own solution, I noticed that the lazy loading of Schedule.getData() didn't work - even when adding "optional = false" to the @OneToOne annotation. Don't get me wrong: Lazy loading most like also didn't work with my original (invalid) model. But the "FetchType.LAZY" part makes me believe that the original author wants this to work, so I investigated futher into it.</p> <p style="margin: 10px 0 0">Then I discovered this excellent blog post by the awesome Vlad Mihalcea: <a href="https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/</a></p> <p style="margin: 10px 0 0">I am sure I've read this blog post several times in the past and modelled quite some entities after this, but forgot about it. Anyway, the blog post shows the very best solution for exactly my use case: A non-optional one-to-one relation with a shared primary key.</p> <p style="margin: 10px 0 0">Long story short, I've changed my entities to look like this:</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
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>Schedule {
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> id;
        <span class="code-keyword" style="color: #000091">private</span> ScheduleData data = <span class="code-keyword" style="color: #000091">new</span> ScheduleData();

        <span class="code-keyword" style="color: #000091">public</span> Schedule() {
                data.setSchedule(<span class="code-keyword" style="color: #000091">this</span>);
        }

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">int</span> getId() {
                <span class="code-keyword" style="color: #000091">return</span> id;
        }

        <span class="code-keyword" style="color: #000091">public</span> void setId(<span class="code-object" style="color: #910091">int</span> id) {
                <span class="code-keyword" style="color: #000091">this</span>.id = id;
        }

        @OneToOne(optional = <span class="code-keyword" style="color: #000091">false</span>, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = <span class="code-quote" style="color: #009100">"schedule"</span>)
        @BatchSize(size = 256)
        <span class="code-keyword" style="color: #000091">public</span> ScheduleData getData() {
                <span class="code-keyword" style="color: #000091">return</span> data;
        }

        <span class="code-keyword" style="color: #000091">public</span> void setData(ScheduleData data) {
                <span class="code-keyword" style="color: #000091">this</span>.data = data;
        }
}

@Entity
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>ScheduleData {
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> id;
        <span class="code-keyword" style="color: #000091">private</span> Schedule schedule;

        @Id
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">int</span> getId() {
                <span class="code-keyword" style="color: #000091">return</span> id;
        }

        <span class="code-keyword" style="color: #000091">public</span> void setId(<span class="code-object" style="color: #910091">int</span> id) {
                <span class="code-keyword" style="color: #000091">this</span>.id = id;
        }

        @OnDelete(action = OnDeleteAction.CASCADE)
        @OneToOne(fetch = FetchType.LAZY, optional = <span class="code-keyword" style="color: #000091">false</span>)
        @MapsId
        <span class="code-comment" style="color: #808080">// Bad name <span class="code-keyword" style="color: #000091; color: #808080">for</span> a foreign key, but needs to stay <span class="code-keyword" style="color: #000091; color: #808080">for</span> legacy reason
</span>        @JoinColumn(name = <span class="code-quote" style="color: #009100">"id"</span>, foreignKey = @ForeignKey(name = <span class="code-quote" style="color: #009100">"FK_ID"</span>))
        <span class="code-keyword" style="color: #000091">public</span> Schedule getSchedule() {
                <span class="code-keyword" style="color: #000091">return</span> schedule;
        }

        <span class="code-keyword" style="color: #000091">public</span> void setSchedule(Schedule schedule) {
                <span class="code-keyword" style="color: #000091">this</span>.schedule = schedule;
        }
}

</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">This doesn't change the the database schema, works exactly like before and even supports lazy loading. The only difference is the new public method ScheduleData.getSchedule(), but I am completely okay with that.</p> <p style="margin: 10px 0 0">In fact, I have used the exact same pattern in several other entities over the last few years, so it was high time to finally "fix" this ancient entity <img class="emoticon" src="cid:jira-generated-image-static-smile-2027ba21-ab76-43e6-bc5b-d0221ec28160" height="16" width="16" align="absmiddle" alt="" border="0"></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-12436?inbox=true&focusedCommentId=104361&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-104361",
    "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-12436#add-comment?atlOrigin=eyJpIjoiMTg4MWY1NzFkZTZiNGQ2Njk4NWQwZDFjNDI5NmZhYTUiLCJwIjoiaiJ9" 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-8d3942d0-f1cd-4d62-bbc7-66e7e4fdfa9b" 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-12436#add-comment?atlOrigin=eyJpIjoiMTg4MWY1NzFkZTZiNGQ2Njk4NWQwZDFjNDI5NmZhYTUiLCJwIjoiaiJ9" 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&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&ct=EmailNotificationLink&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#100096-<span title="5c3add509cb0a40d4f138b4530b8b1183aa73421" data-commit-id="5c3add509cb0a40d4f138b4530b8b1183aa73421}">sha1:5c3add5</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-33588313-9027-4419-838f-62e7be36db81" 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 border="0" width="1" height="1" alt="" src="http://atlassian.et.e.sparkpost.com/q/rto0EhLndXsrF3s2cMb_7Q~~/AAAAAQA~/RgRd--Y4PlcLYXRsYXNzaWFudXNCCgAAuLIaXEMlFC9SIGhpYmVybmF0ZS1pc3N1ZXNAbGlzdHMuamJvc3Mub3JnWAQAAAAE">
</body>
</html>