<!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: #333; 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">
<!-- header here -->
<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">
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px"> <img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/bfda4c8ce231d748d1123620ca048231?d=mm&s=48" 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="brmeyer" id="email_brmeyer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=brmeyer" style="color:#6c797f;; color: #3b73af; text-decoration: none">Brett Meyer</a> <strong>updated</strong> an issue
</td>
</tr>
</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">
<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: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; 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">
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<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">
<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-8643" style="color: #3b73af; text-decoration: none"><img src="https://hibernate.atlassian.net/images/icons/issuetypes/bug.png" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/HHH-8643" style="color: #3b73af; text-decoration: none">HHH-8643</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-8643" style="color: #3b73af; text-decoration: none">java.util.Calendar conversion to java.util.Date fails </a> </span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 10px; padding-bottom: 5px">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<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="brmeyer" id="email_brmeyer" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=brmeyer" style="color:#6c797f;; color: #3b73af; text-decoration: none">Brett Meyer</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 5px; padding-bottom: 10px">
<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">
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> <span class="diffcontext">When using java.util.Calendar in a query to retrieve an entity class containing a field of java.util.Date type it throws exceptions. <br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}<br /></span> <span class="diffcontext"> Caused by: java.lang.IllegalArgumentException: Parameter value [java.util.GregorianCalendar[time=1382561831603,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/Chicago",offset=-21600000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/Chicago,offset=-21600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2013,MONTH=9,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=23,DAY_OF_YEAR=296,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=57,SECOND=11,MILLISECOND=603,ZONE_OFFSET=-21600000,DST_OFFSET=3600000]] did not match expected type [java.util.Date]<br /> at org.hibernate.ejb.AbstractQueryImpl.validateParameterBinding(AbstractQueryImpl.java:375) [hibernate-entitymanager-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]<br /> at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:348) [hibernate-entitymanager-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]<br /> at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:419) [hibernate-entitymanager-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]<br /> at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:73) [hibernate-entitymanager-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]<br /> at org.jboss.as.jpa.container.QueryNonTxInvocationDetacher.setParameter(QueryNonTxInvocationDetacher.java:142) [jboss-as-jpa-7.2.1.Final-redhat-10.jar:7.2.1.Final-redhat-10]<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">The same code worked fine in EAP 5 with Hibernate 3.<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">Here are the code snippets:<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}<br /></span> <span class="diffcontext"> // With GregorianCalendar the execution failed in EAP6.1, but NOT in EAP5!<br /> // GregorianCalendar date = new GregorianCalendar(); <br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> // With Date the execution successes in EAP6.1!<br /> Date date = new Date();<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> <br /></span> <span class="diffcontext"> Query query = this.manager.createQuery("from xxx where maketime <= :_maketime");<br /> query.setParameter("_maketime", date, TemporalType.TIMESTAMP);<br /> return query.getResultList();<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">@Entity<br />public class xxx implements Serializable {<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> ...<br /> private Date maketime; <br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> <br /></span> <span class="diffcontext"> public Date getMaketime()</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> return maketime;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> }<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> <br /></span> <span class="diffcontext"> public void setMaketime(Date maketime)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> this.maketime = maketime;</span> <span class="diffaddedchars" style="background-color:#ddfade;"> }</span> <span class="diffcontext"><br /> }<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code</span> <span class="diffcontext">}<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /><br /></span> <span class="diffcontext">I've checked the hibernate source code.<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">In hibernate-entitymanager-3.4.0.GA-CP04(eap 5.1.2), I find the following code that seems to allow both java.util.Date and java.util.Calendar to work.<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">org.hibernate.ejb.QueryImpl.java:<br /> public Query setParameter(String name, Date value, TemporalType temporalType);<br /> public Query setParameter(String name, Calendar value, TemporalType temporalType);<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">The similar code still exists in hibernate-entitymanager-4.2.0.SP1-redhat-1 in org.hibernate.ejb.QueryImpl. However, it adds call to <br /> registerParameterBinding( getParameter(name), value );<br />which in turns calls <br /> private void validateParameterBinding(Parameter parameter, Object value)<br />in org.hibernate.ejb.AbstractQueryImpl:<br /><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code}<br /></span> <span class="diffcontext"> private void validateParameterBinding(Parameter parameter, Object value) {<br /> if ( value == null || parameter.getParameterType() == null )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> // nothing we can check</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> return;</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> }<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> if ( Collection.class.isInstance( value )<br /> && ! Collection.class.isAssignableFrom( parameter.getParameterType() ) )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> // we have a collection passed in where we are expecting a non-collection.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> // NOTE : this can happen in Hibernate's notion of "parameter list" binding</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> // NOTE2 : the case of a collection value and an expected collection (if that can even happen)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> // will fall through to the main check.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> validateCollectionValuedParameterMultiBinding( parameter, (Collection) value );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> }<br /> else if ( value.getClass().isArray() )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> validateArrayValuedParameterBinding( parameter, value );</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> }<br /> else {<br /> if ( ! parameter.getParameterType().isInstance( value ) )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> {</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{</span> <span class="diffcontext"> throw new IllegalArgumentException(</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> String.format(</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> "Parameter value [%s] did not match expected type [%s]",</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> value,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> parameter.getParameterType().getName()</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext"> );</span> <span class="diffaddedchars" style="background-color:#ddfade;"> }</span> <span class="diffcontext"><br /> }<br /> }<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{code</span> <span class="diffcontext"> }<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /><br /></span> <span class="diffcontext">Is this the expected behavior? Any reason we make such change?<br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br /></span> <span class="diffcontext">I've also checked the JPA spec 2.0. It doesn't mention that java.util.Calendar should work with java.util.Date field or vice visa. It only mentions that the java.util.Date and java.util.Calendar should be supported for TemporalType.TIMESTAMP in "11.1.47 Temporal Annotation".</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<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">
<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">
<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-8643#add-comment" target="_blank" title="{getText($action.text)}" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="https://hibernate.atlassian.net/images/mail/comment-icon.png" alt="Add Comment" title="{Add Comment}-icon" 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-8643#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a>
</td>
</tr>
</table>
</td>
</tr>
</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: #fff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #fff; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly">
</td>
</tr>
</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">
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; 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">(v6.2-OD-01#6204-<span title="9a81f1273565b708db95415d383556dcb6085057" data-commit-id="9a81f1273565b708db95415d383556dcb6085057}">sha1:9a81f12</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">
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="https://hibernate.atlassian.net/images/mail/footer-desktop-logo.png" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>