<!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="cid:jira-generated-image-avatar-989d2229-1f81-4766-a32f-c848d30b8b86" 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="cthomson" id="email_cthomson" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=cthomson" style="color:#6c797f;; color: #3b73af; text-decoration: none">Chris Thomson</a> <strong>created</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-11020" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-e4194422-04c3-4ae3-9f7d-b565463aefef" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-11020" style="color: #3b73af; text-decoration: none">HHH-11020</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-11020" style="color: #3b73af; text-decoration: none">calling EntityManager.unwrap(Session.class) to gain access to Hibernated Session in a Weld CDI environment results in ClassCastException</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">Issue Type:</th> 
                                                    <td class="has-icon" style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-avatar-e4194422-04c3-4ae3-9f7d-b565463aefef" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"> Bug </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Affects Versions:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> 5.2.1 </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Assignee:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> Unassigned </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Components:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> hibernate-core </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Created:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> 03/Aug/2016 14:31 PM </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Environment:</th> 
                                                    <td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> Hibernate 5.2.1.FINAL <br> Weld 2.3.5.FINAL <br> Java 8u101 <br> PostgreSQL 9.5.2 <br> </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Priority:</th> 
                                                    <td class="has-icon" style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <img src="cid:jira-generated-image-static-major-7a0059e6-144d-4ad2-a022-50a66a91a24a" height="16" width="16" border="0" align="absmiddle" alt="Major" style="vertical-align: text-bottom"> Major </td> 
                                                </tr> 
                                                <tr> 
                                                    <th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Reporter:</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="cthomson" id="email_cthomson" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=cthomson" style="color:#6c797f;; color: #3b73af; text-decoration: none">Chris Thomson</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"> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0; margin-top: 0">We have an application that was using the following successfully:</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">Hibernate 5.0.10.FINAL<br> Weld 2.3.5.FINAL<br> Java 8u101<br> PostgreSQL 9.5.2</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">In this application we use Weld CDI to manage the EntityManager reference. There is one spot where we gain access to the underlying Hibernate Session by calling EntityManager.unwrap(Session.class) in order to call Session.setDefaultReadOnly(true). It looks something like:</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">public abstract class AbstractDao&lt;E, K extends Serializable&gt; implements Dao&lt;E, K&gt; {<br> ...<br> @Inject<br> protected EntityManager em;<br> ...<br> public E find(....) {<br> ...<br> if (readOnly) </p> { em.unwrap(Session.class).setDefaultReadOnly(true); } <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">...<br> }</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">We attempted to upgrade to Hibernate 5.2.1.FINAL with no other changes, this results in the call to em.unwrap(Session.class) to now fail with a ClassCastException:</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">java.lang.ClassCastException: org.jboss.weldx.persistence.EntityManager$1473582185$Proxy$_$$_WeldClientProxy cannot be cast to org.hibernate.Session</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">This appears to be a result of SessionImpl now directly implementing javax.persistence.EntityManager and returning itself (i.e. "this"), from the unwrap method, from 5.2.1.FINAL version of SessionImpl.java:</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> @Override<br> @SuppressWarnings("unchecked")<br> public &lt;T&gt; T unwrap(Class&lt;T&gt; clazz) {<br> checkOpen();</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> if ( Session.class.isAssignableFrom( clazz ) ) </p> { --&gt; return (T) this; } <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> if ( SessionImplementor.class.isAssignableFrom( clazz ) ) </p> { return (T) this; }<br> if ( SharedSessionContractImplementor.class.isAssignableFrom( clazz ) ) { return (T) this; } <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> if ( EntityManager.class.isAssignableFrom( clazz ) ) </p> { return (T) this; } <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> throw new PersistenceException( "Hibernate cannot unwrap " + clazz );<br> }</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">The SessionImpl.unwrap method returns the correct value, however there appears to be a negative interaction with Weld, in Weld's ProxyMethodHandler.java:</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> /* (non-Javadoc)</p> 
                                                        <ul> 
                                                            <li>@see javassist.util.proxy.MethodHandler#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.reflect.Method, java.lang.Object[])<br> */<br> public Object invoke(Object self, Method thisMethod, Method proceed, Object[] args) throws Throwable {<br> if (thisMethod == null) 
                                                                <div class="error">
                                                                    <span class="error">Unknown macro: { BeanLogger.LOG.methodHandlerProcessingReturningBeanInstance(self.getClass()); if (beanInstance == null) { throw BeanLogger.LOG.beanInstanceNotSetOnProxy(getBean()); }<br> return beanInstance.getInstance();<br> }<br> BeanLogger.LOG.methodHandlerProcessingCall(thisMethod, self.getClass());<br> if (thisMethod.getDeclaringClass().equals(TargetInstanceProxy.class)) {<br> if (beanInstance == null) { throw BeanLogger.LOG.beanInstanceNotSetOnProxy(getBean()); } if (thisMethod.getName().equals("getTargetInstance")) { return beanInstance.getInstance(); } else if (thisMethod.getName().equals("getTargetClass")) { return beanInstance.getInstanceType(); } else { return null; } }</span> 
                                                                </div> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> else if (thisMethod.getName().equals("_initMH")) </p> { BeanLogger.LOG.settingNewMethodHandler(args[0], self.getClass()); return new ProxyMethodHandler(contextId, new TargetBeanInstance(args[0]), getBean()); } <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> else </p> 
                                                                <div class="error">
                                                                    <span class="error">Unknown macro: { if (beanInstance == null) { throw BeanLogger.LOG.beanInstanceNotSetOnProxy(getBean()); } Object instance = beanInstance.getInstance(); Object result = beanInstance.invoke(instance, thisMethod, args); // if the method returns this and the return type matches the proxy type, return the proxy instead // to prevent the bean instance escaping---&gt; if (result != null &amp;&amp; result == instance &amp;&amp; (thisMethod.getReturnType().isAssignableFrom(self.getClass()))) { return self; } return result; }</span> 
                                                                </div> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0"> }</p></li> 
                                                        </ul> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">Weld detects that the object returned from calling SessionImpl.unwrap is the object wrapped in the Weld client proxy and returns the Weld client proxy rather than a direct reference to the SessionImpl object. Unfortunately the Weld client proxy object only implements the EntityManager interface, not all interfaces that SessionImpl implements which includes Session.</p> <p style="margin-top:0;margin-bottom:10px;; margin: 10px 0 0">I'm not sure if this is a Hibernate bug or a Weld bug or a combination of both.</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"> 
                                        <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-11020#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-26f1d808-10a7-4c65-8058-8f58fd29a4a5" 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-11020#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-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">(v1000.217.1#100008-<span title="fdd523c323c2c9db17acf28ef688f81d0a4b61ea" data-commit-id="fdd523c323c2c9db17acf28ef688f81d0a4b61ea}">sha1:fdd523c</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"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-668ee219-5e64-4060-8b90-2ce0b2cf1a2e" 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>