[hibernate-dev] HQL + numeric literal typing

Emmanuel Bernard emmanuel at hibernate.org
Mon Jan 11 12:23:22 EST 2010


I guess the suffix solution is not harmful and we can always expose the more elaborate solution if needed later.

On 11 janv. 2010, at 17:23, Steve Ebersole wrote:

> I need to add a way to further define the type of numeric literals.
> Currently HQL supports the use of the 'F', 'D' and 'L' suffixes as
> defined by Java to demarcate floats, doubles and longs respectively.  I
> find myself the need to do the same with BigInteger and BigDecimal.  
> 
> I see two options:
> 
> 1) 2 new suffixes ( 'BI' and 'BD'? )
> 2) new escape syntax ( {as BigInteger 10000000} ? )
> 
> As a side note, I could in fact just use the CAST function as HQL does
> support notion like CAST( 10000000 AS java.math.BigDecimal ).  However
> that results in a SQL cast as well, and we get into potential issues
> with "bad dialect setup".  Ideally I am just looking for a way to
> identify the exact java type to use.
> 
> As an example of why this is important... The issue I ran into deals
> with the JPA rules for determining query return types.  Take a
> multiplication: JPA says that a multiplication that involves a
> BigInteger as one of its operands should return a BigInteger.  So
> consider "select some.attributePath * 10000000 ...".  If
> 'some.attributePath' is defined as Integer, this multiplication will
> result in a Integer value because the '10000000' literal will also be
> interpreted as Integer.
> 
> This can also be useful for parameters as well (although this whole
> issue is generally related to select clauses and many databases have
> well defined restrictions on using parameters in select, at least
> without the explicit CAST so they know what types to expect).
> 
> So as far as an escape syntax, I guess the main question is how
> generally useful this might be in other clauses and across other data
> types.
> 
> Anyone else run across similar needs that would impact here?
> 
> -- 
> Steve Ebersole <steve at hibernate.org>
> Hibernate.org
> 
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev





More information about the hibernate-dev mailing list