[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-5803) ValueHandlerFactory fails to convert from java.lang.Long to java.lang.Number

Gail Badner (JIRA) noreply at atlassian.com
Mon Jan 10 11:53:05 EST 2011


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5803?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gail Badner updated HHH-5803:
-----------------------------

    Fix Version/s: 4.0.0.Alpha1
                   3.6.1

> ValueHandlerFactory fails to convert from java.lang.Long to java.lang.Number
> ----------------------------------------------------------------------------
>
>                 Key: HHH-5803
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5803
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: entity-manager, query-criteria
>    Affects Versions: 3.6.0
>         Environment: Hibernate 3.6.0, Microsoft SQL Server 2008 R2
>            Reporter: Jens Rydholm
>             Fix For: 3.6.1, 4.0.0.Alpha1
>
>
> When using the criteria builder to compare the quotient between two database columns with a Long value from the Java code, Hibernate is unaware of how to convert from a Long to a Number (despite Long being a subclass of Number). Pseudocode and exception stacktrace included below.
> CriteriaBuilder builder = ...;
> Path<Long> longPath = ...;
> Path<Float> floatPath = ...;
> Long aLong = 250000000L;
> builder.ge(builder.quot(longPath, floatPath), aLong);
> java.lang.IllegalArgumentException: Unaware how to convert value [250000000 : java.lang.Long] to requested type [java.lang.Number]
>         at org.hibernate.ejb.criteria.ValueHandlerFactory.unknownConversion(ValueHandlerFactory.java:259)
>         at org.hibernate.ejb.criteria.ValueHandlerFactory.convert(ValueHandlerFactory.java:287)
>         at org.hibernate.ejb.criteria.predicate.ComparisonPredicate.<init>(ComparisonPredicate.java:88)
>         at org.hibernate.ejb.criteria.CriteriaBuilderImpl.ge(CriteriaBuilderImpl.java:534)
> ...
> Can be worked around by using builder.toLong to wrap builder.quot, like this:
> builder.ge(builder.toLong(builder.quot(longPath, floatPath)), aLong);
> Due to time constraints and the existing workaround, a test case can unfortunately not be provided at this time.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list