<!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-55b4b072-8b45-44e0-b99e-0fb45f48ba30" 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="superbigvlad" id="email_superbigvlad" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=superbigvlad" style="color:#6c797f;; color: #3b73af; text-decoration: none">Vladimir Martinek</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">&nbsp;</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-10745" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-797f1670-5656-4739-af3a-8b2be83d12a6" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-10745" style="color: #3b73af; text-decoration: none">HHH-10745</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-10745" style="color: #3b73af; text-decoration: none">Invalid cycle detection in MetamodelGraphWalker</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="superbigvlad" id="email_superbigvlad" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=superbigvlad" style="color:#6c797f;; color: #3b73af; text-decoration: none">Vladimir Martinek</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="diffaddedchars" style="background-color:#ddfade;">Update:<br><br>I have compare the behaviour of</span> <span class="diffcontext">Fetch</span> <span class="diffaddedchars" style="background-color:#ddfade;"> Profiles and standard EAGER relations. The MetamodelGraphWalker graph walker produces the same results, the SQL is the same (missing relation). With EAGER the relation is loaded in second pass, via SessionImpl.internalLoad(). There it is decided what LoadType is used - for eager it uses INTERNAL_LOAD_EAGER, for lazy INTERNAL_LOAD_LAZY. It does not take into account the fetch</span> <span class="diffcontext"> profiles</span> <span class="diffaddedchars" style="background-color:#ddfade;"> here!<br><br>The last place I can get hold of fetch profiles in in AbstractLoadPlanBasedEntityLoader line 82. After that the fetch profile information is lost, never making it anywhere near to SessionImpl.internalLoad().<br><br>I would like to implement this, but to do that, I need someone to point me in the right direction. Most of all I need answers to following questions:<br><br>1) Is it right to assume the fetch profiles should be evaluated in SessionImpl.internalLoad() and appropriate LoadType used when detected a relation affected by a fetch profile?<br>2) If so, what is the intended way of getting the fetch profile information to SessionImpl.internalLoad()?<br><br>Also, a colleague of mine attempted to implement FetchType.SELECT fetch strategy and ended up with precisely the same problem. I believe solving my issue would pave way for quick FetchType.SELECT implementation (which we could also use on our project).<br><br>Thank you<br><br><br>----------------------------<br><br><br>Fetch profiles</span> <span class="diffcontext"> fail to load certain relations because of invalid cycle detection in MetamodelGraphWalker. Attached test case.<br><br>Details:<br><br>Have 5 entities - Start, Via1, Via2, Mid and Finish with following relations (all LAZY):<br><br>Start</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Via1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Mid</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Finish<br>Start</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Via2</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Mid</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> -</span> <span class="diffcontext">n:1</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">-</span> <span class="diffcontext"> Finish<br><br>Now, trying to use Fetch Profiles to load Start entity and all of its relations. I would expect Hibernate to execute following SQL select:<br><br>SELECT * FROM Start s<br> LEFT OUTER JOIN Via1 v1 (path Start-Via1)<br> LEFT OUTER JOIN Mid<br> JOIN Finish<br><br> LEFT OUTER JOIN Via2 (path Start-Via2)<br> LEFT OUTER JOIN Mid<br> JOIN Finish<br><br>Unfortunately, ic ompletely omits the second join from Mid to Finish, what I am getting is:<br><br>SELECT * FROM Start s<br> LEFT OUTER JOIN Via1 v1 (path Start-Via1)<br> LEFT OUTER JOIN Mid<br> JOIN Finish<br><br> LEFT OUTER JOIN Via2 (path Start-Via2)<br> LEFT OUTER JOIN Mid<br><br>I dug deeper into this and found cycle detection in MetamodelGraphWalker, line 144. Basically, when MetamodelGraphWalker detects a relation that has already been visited, it considers it a cycle. But in my case it is not a cycle - I just came to the same relation twice using two different paths.<br><br>From the user perspective, the fetch profiles seem to behave randomly - sometimes they fetch correct relations, sometimes they do not.<br><br>I believe there should be a better cycle detection.<br><br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><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-10745#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-8691a4b0-82c9-469c-96ca-0c0691d4bf58" 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-10745#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">&nbsp;</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">(v1000.5.2#72002-<span title="b4422fef7d0b71281abfaa8a6ba825b85c07a2bf" data-commit-id="b4422fef7d0b71281abfaa8a6ba825b85c07a2bf}">sha1:b4422fe</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-10a170bd-1a29-4c39-896d-7529c888e6fd" 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>