<!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/6797d3b7223bf0c895c88060f3d7675d?s=48&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F6797d3b7223bf0c895c88060f3d7675d%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="asusnjar" id="email_asusnjar" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=asusnjar" style="color:#6c797f;; color: #3b73af; text-decoration: none">A Susnjar</a> <strong>updated</strong> an issue </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 class="page-title-pattern-first-line " style="padding: 0; 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-12719" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-4e5e0e02-03e4-4412-b84d-99ecc4dd91c2" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-12719" style="color: #3b73af; text-decoration: none">HHH-12719</a> </td> 
                                                </tr> 
                                                <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-12719" style="color: #3b73af; text-decoration: none">BytecodeProviderImpl.findAccessor only looks at declared methods but is called for an inherited property</a> </span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand  wrapper-special-margin" 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; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff"> 
                                        <table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0"> 
                                            <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: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="asusnjar" id="email_asusnjar" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=asusnjar" style="color:#6c797f;; color: #3b73af; text-decoration: none">A Susnjar</a> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td class="email-content-main mobile-expand  issue-description-container" 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; 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: 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"> <span class="diffaddedchars" style="background-color:#ddfade;">"</span> <span class="diffcontext">{{BytecodeProviderImpl.findAccessor()}} throws an exception when called to find the accessor method for a property that is inherited:</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n</span> <span class="diffcontext">{noformat}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>Caused</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\nCaused</span> <span class="diffcontext"> by: org.hibernate.bytecode.internal.bytebuddy.BulkAccessorException: cannot find an accessor : @0</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.findAccessor(BytecodeProviderImpl.java:245) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.findAccessors(BytecodeProviderImpl.java:218) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.bytecode.internal.bytebuddy.BytecodeProviderImpl.getReflectionOptimizer(BytecodeProviderImpl.java:80) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.tuple.entity.PojoEntityTuplizer.&lt;init&gt;(PojoEntityTuplizer.java:78) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_172]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_172]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_172]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_172]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.tuple.entity.EntityMetamodel.&lt;init&gt;(EntityMetamodel.java:382) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.persister.entity.AbstractEntityPersister.&lt;init&gt;(AbstractEntityPersister.java:551) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> at</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tat</span> <span class="diffcontext"> org.hibernate.persister.entity.SingleTableEntityPersister.&lt;init&gt;(SingleTableEntityPersister.java:124) ~[hibernate-core-5.3.1.Final.jar:5.3.1.Final]</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext">{noformat}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>This</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\nThis</span> <span class="diffcontext"> is likely because it relies only on {{clazz.getDeclaredMethod( name, params )}} and nothing outside it:</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n</span> <span class="diffcontext">{code:java}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> private</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tprivate</span> <span class="diffcontext"> static Method findAccessor(Class clazz, String name, Class[] params, int index)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;throws</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tthrows</span> <span class="diffcontext"> BulkAccessorException {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;try</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\ttry</span> <span class="diffcontext"> {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;final</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tfinal</span> <span class="diffcontext"> Method method = clazz.getDeclaredMethod( name, params ); // &lt;---- HERE</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;if</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tif</span> <span class="diffcontext"> ( Modifier.isPrivate( method.getModifiers() ) ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;throw</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\tthrow</span> <span class="diffcontext"> new BulkAccessorException(</span> <span class="diffaddedchars" style="background-color:#ddfade;"> \</span> <span class="diffcontext"> "private property</span> <span class="diffaddedchars" style="background-color:#ddfade;">\</span> <span class="diffcontext">", index );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>&nbsp;&nbsp;&nbsp;return</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\t\treturn</span> <span class="diffcontext"> method;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;catch</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tcatch</span> <span class="diffcontext"> (NoSuchMethodException e) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;throw</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tthrow</span> <span class="diffcontext"> new BulkAccessorException(</span> <span class="diffaddedchars" style="background-color:#ddfade;"> \</span> <span class="diffcontext"> "cannot find an accessor</span> <span class="diffaddedchars" style="background-color:#ddfade;">\</span> <span class="diffcontext">", index );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t</span> <span class="diffcontext"> }</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext">{code}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>The</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\nThe</span> <span class="diffcontext"> method names that end up passed to the above {{findAccessor()}} method are discovered based on the methods that have already been found, which brings the question as to why do they need to be found again as well. The code that discovers them before does iterate over subclasses to find them all - the following code is in {{ReflectHelper}}:</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n</span> <span class="diffcontext">{code:java}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> public</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\tpublic</span> <span class="diffcontext"> static Method findGetterMethod(Class containerClass, String propertyName) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;Class</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tClass</span> <span class="diffcontext"> checkClass = containerClass;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;Method</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tMethod</span> <span class="diffcontext"> getter = null;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;// check containerClass, and then its super types (if any)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;while</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\twhile</span> <span class="diffcontext"> ( getter == null &amp;&amp; checkClass != null ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;if</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tif</span> <span class="diffcontext"> ( checkClass.equals( Object.class ) ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;break</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\tbreak</span> <span class="diffcontext">;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>&nbsp;&nbsp;&nbsp;getter</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\t\tgetter</span> <span class="diffcontext"> = getGetterOrNull( checkClass, propertyName );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;// if no getter found yet, check all implemented interfaces</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;if</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tif</span> <span class="diffcontext"> ( getter == null ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;getter</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\tgetter</span> <span class="diffcontext"> = getGetterOrNull( checkClass.getInterfaces(), propertyName );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>&nbsp;&nbsp;&nbsp;checkClass</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\t\tcheckClass</span> <span class="diffcontext"> = checkClass.getSuperclass();</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;...</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t</span> <span class="diffcontext"> }</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext">{code}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>But</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\nBut</span> <span class="diffcontext"> the code in {{PojoEntityTuplizer}} then gets their names only and passes those names on, instead of the methods themselves. The following is a relevant snippet from the {{PojoEntityTuplizer}} constructor and it has a possibly relevant</span> <span class="diffaddedchars" style="background-color:#ddfade;"> \</span> <span class="diffcontext"> "todo</span> <span class="diffaddedchars" style="background-color:#ddfade;">\</span> <span class="diffcontext">" comment in there:</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n</span> <span class="diffcontext">{code:java}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;String</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tString</span> <span class="diffcontext">[] getterNames = new String[propertySpan];</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;String</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tString</span> <span class="diffcontext">[] setterNames = new String[propertySpan];</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;Class</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tClass</span> <span class="diffcontext">[] propTypes = new Class[propertySpan];</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;for</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\tfor</span> <span class="diffcontext"> ( int i = 0; i &lt; propertySpan; i++ ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;getterNames</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tgetterNames</span> <span class="diffcontext">[i] = getters[i].getMethodName();</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;setterNames</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tsetterNames</span> <span class="diffcontext">[i] = setters[i].getMethodName();</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;propTypes</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\tpropTypes</span> <span class="diffcontext">[i] = getters[i].getReturnType();</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>&nbsp;&nbsp;if</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n\t\tif</span> <span class="diffcontext"> ( hasCustomAccessors || !Environment.useReflectionOptimizer() ) {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;optimizer</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\toptimizer</span> <span class="diffcontext"> = null;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t</span> <span class="diffcontext">&nbsp;&nbsp;}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;else</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\telse</span> <span class="diffcontext"> {</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;// todo : YUCK!!!</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;optimizer</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\toptimizer</span> <span class="diffcontext"> = Environment.getBytecodeProvider().getReflectionOptimizer(</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mappedClass</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\t\tmappedClass</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getterNames</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\t\tgetterNames</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setterNames</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\t\tsetterNames</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propTypes<br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\t\t\t\t\tpropTypes\r\n\t\t\t</span> <span class="diffcontext">&nbsp;&nbsp;&nbsp;);</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext">{code}</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br>I</span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\nI</span> <span class="diffcontext"> cannot create a small yet comprehensive test case yet, unfortunately.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n\r\n</span> <span class="diffcontext">*Additional notes*</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext"># Mapping is loaded from (legacy) *.hbm.xml files. Code has no relevant annotations.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext"># Entity bytecode is enhanced by the {{hibernate-enhance-maven-plugin}} with {{enableLazyInitialization}}, {{enableDirtyTracking}} and {{enableAssociationManagement}} set to {{true}} and {{enableExtendedEnhancement}} set to</span> <span class="diffaddedchars" style="background-color:#ddfade;"> {{</span> <span class="diffcontext"> false</span> <span class="diffaddedchars" style="background-color:#ddfade;">}}</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext"># I am not aware of any workarounds - I would appreciate if someone could identify them.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n</span> <span class="diffcontext"># Despite the bytecode enhancement with lazy initialization enabled and indicated as successful ({{Successfully enhanced class [...]}}), {{BytecodeEnhancementMetadataPojoImpl}} instance for the problem class, at the time when the exception is thrown, has the {{enhancedForLazyLoading}} field set to {{false}}. This may be an unrelated issue or may indicate a possibility of a workaround.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;">\r\n"</span> </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-12719?inbox=true&",
    "name": "View Issue"
      },
  "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-12719#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-abcd0085-6845-4f41-a530-330efa853898" 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-12719#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#100087-<span title="2813e6b6712bfbde5d8838a93e9c10bda3573f23" data-commit-id="2813e6b6712bfbde5d8838a93e9c10bda3573f23}">sha1:2813e6b</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-eeeb80c0-a29e-4a57-9743-cffe33d9022c" 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>   
    </body>
</html>