<!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-809842db-51d6-4352-960a-30c5287f2e39" 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="marcg" id="email_marcg" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=marcg" style="color:#6c797f;; color: #3b73af; text-decoration: none">Marcelo Glasberg</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"> </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-10818" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-8a65549d-7f73-4a4b-bf3d-0b97d5e4d5da" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-10818" style="color: #3b73af; text-decoration: none">HHH-10818</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-10818" style="color: #3b73af; text-decoration: none">Allow AttributeConverter on attributes marked as Lob (REALLY this time)</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="marcg" id="email_marcg" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=marcg" style="color:#6c797f;; color: #3b73af; text-decoration: none">Marcelo Glasberg</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="diffcontext">I believe HHH-9615 is not done. The test case there converts String to Integer, to represent it as Lob, but these are both basic regular types. If instead of a String you use something else (some custom Class), it doesn't seem to work. <br><br>For example, here I use a class called Imagem, and convert it to a String: <br><br>{code:java}<br>@Converter<br>public class ImagemToString_Converter<br> implements AttributeConverter<Imagem, String> {<br><br> public String convertToDatabaseColumn(@Nullable Imagem attribute) {<br> if (attribute== null) return null;<br> return attribute.toString();<br> }<br><br> public Imagem convertToEntityAttribute(@Nullable String dbData) {<br> return Imagem.getInstance(dbData);<br> }<br> }<br>{code}<br><br>The above code works OK as long as the field is not a @Lob (which means the converter itself is correct). But as soon as I add @Lob to the field it stops working. For example:<br><br>{code:java}<br></span> <span class="diffaddedchars" style="background-color:#ddfade;">@Lob<br></span> <span class="diffcontext">protected Imagem fotografia;<br>{code}<br><br>Then, when I try to save, it should see a String (the converter gets called), but it still sees an Imagem, and then I get this:<br><br>{code:java}<br>java.lang.ClassCastException:<br>Imagem.Imagem cannot be cast to org.hibernate.engine.jdbc.CharacterStream<br> at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(124)<br> at org.hibernate.type.descriptor.sql.BasicBinder.bind(74)<br> at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(277)<br> at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(272)<br> at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(39)<br> at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(2646)<br> at org.hibernate.persister.entity.AbstractEntityPersister.insert(2931)<br> at org.hibernate.persister.entity.AbstractEntityPersister.insert(3434)<br> at org.hibernate.action.internal.EntityInsertAction.execute(89)<br> at org.hibernate.engine.spi.ActionQueue.executeActions(560)<br> at org.hibernate.engine.spi.ActionQueue.executeActions(434)<br> at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(337)<br> at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(39)<br> at org.hibernate.internal.SessionImpl.flush(1396)<br> at org.hibernate.internal.SessionImpl.managedFlush(472)<br> at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(3132)<br> at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(2369)<br> at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(467)<br> at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(147)<br> at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(38)<br> at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(221)<br> at org.hibernate.engine.transaction.internal.TransactionImpl.commit(68)<br> at Http.Sessao.SessaoETransacaoHibernate.comitaATransaçãoCasoExistaTransaçãoAtiva(SessaoETransacaoHibernate.java:28)<br> at Http.Sessao.Filtro$ProcessadorDeRequest.processaRequest(Filtro.java:267)<br> at Http.Sessao.Filtro$ProcessadorDeRequest.access$100(Filtro.java:91)<br> at Http.Sessao.Filtro.doFilter(Filtro.java:594)<br> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(239)<br> at org.apache.catalina.core.ApplicationFilterChain.doFilter(206)<br> at org.apache.catalina.core.StandardWrapperValve.invoke(219)<br> at org.apache.catalina.core.StandardContextValve.invoke(106)<br> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(502)<br> at org.apache.catalina.core.StandardHostValve.invoke(142)<br> at org.apache.catalina.valves.ErrorReportValve.invoke(79)<br> at org.apache.catalina.valves.AbstractAccessLogValve.invoke(617)<br> at org.apache.catalina.core.StandardEngineValve.invoke(88)<br> at org.apache.catalina.connector.CoyoteAdapter.service(518)<br> at org.apache.coyote.http11.AbstractHttp11Processor.process(1091)<br> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(668)<br> at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(2463)<br> at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(2452)<br> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)<br> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)<br> at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(61)<br> at java.lang.Thread.run(Thread.java:745)<br>{code}<br><br>If I save it to the database without @Lob, and then add the @Lob and try to open it, I get this:<br><br>{code:java}<br>org.hibernate.PropertyAccessException:<br>Could not set field value [com.mysql.jdbc.Clob@4b881040] value by reflection : [class ModuloADM.Usuario.Usuario.fotografia] setter of ModuloADM.Usuario.Usuario.fotografia<br> at org.hibernate.property.access.spi.SetterFieldImpl.set(58)<br> at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(610)<br> at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(205)<br> at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(4618)<br> at org.hibernate.engine.internal.TwoPhaseLoad.doInitializeEntity(169)<br> at org.hibernate.engine.internal.TwoPhaseLoad.initializeEntity(125)<br> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.performTwoPhaseLoad(238)<br> at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(209)<br> at org.hibernate.loader.plan.exec.process.internal.ResultSetProcessorImpl.extractResults(133)<br> at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(122)<br> at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(86)<br> at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(167)<br> at org.hibernate.persister.entity.AbstractEntityPersister.load(4004)<br> at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(508)<br> at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(478)<br> at org.hibernate.event.internal.DefaultLoadEventListener.load(219)<br> at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(278)<br> at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(121)<br> at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(89)<br> at org.hibernate.internal.SessionImpl.fireLoad(1212)<br> at org.hibernate.internal.SessionImpl.access$1900(204)<br> at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(2752)<br> at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(2726)<br> at org.hibernate.internal.SessionImpl.get(1048)<br> at sun.reflect.NativeMethodAccessorImpl.invoke0(sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br> at sun.reflect.NativeMethodAccessorImpl.invoke(62)<br> at sun.reflect.DelegatingMethodAccessorImpl.invoke(43)<br> at java.lang.reflect.Method.invoke(Method.java:483)<br> at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(338)<br> at com.sun.proxy.$Proxy64.get(com.sun.proxy.$Proxy64.get(Unknown Source)<br> at Objetos.Registro.Registro_Dao.busca(Registro_Dao.java:202)<br> ...<br>Caused by:<br>java.lang.IllegalArgumentException:<br>Can not set Imagem.Imagem field ModuloADM.Usuario.Usuario.fotografia to com.mysql.jdbc.Clob<br> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(167)<br> at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(171)<br> at sun.reflect.UnsafeObjectFieldAccessorImpl.set(81)<br> at java.lang.reflect.Field.set(Field.java:758)<br> at org.hibernate.property.access.spi.SetterFieldImpl.set(38)<br> ...<br>{code}</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-10818#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-6d5dabe7-1567-4415-86ba-5add8b00075c" 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-10818#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"> </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.35.1#100001-<span title="4aeecd83f49555e1ee6da2fa274b3f0f28b82223" data-commit-id="4aeecd83f49555e1ee6da2fa274b3f0f28b82223}">sha1:4aeecd8</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-764ce79f-567d-49c2-8105-7307eeb8289f" 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>