[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5273) RowCountProjection long to int cast exception

Ioannis Cherouvim (JIRA) noreply at atlassian.com
Mon May 31 07:11:56 EDT 2010


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=37304#action_37304 ] 

Ioannis Cherouvim commented on HHH-5273:
----------------------------------------

I confirm this.
For my case one solution is to change all rowCount casts to a Number instead of Long.

> RowCountProjection long to int cast exception
> ---------------------------------------------
>
>                 Key: HHH-5273
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5273
>             Project: Hibernate Core
>          Issue Type: Bug
>    Affects Versions: 3.5.2
>         Environment: hibernate-core 3.5.2
>            Reporter: Pamir Erdem
>
> After we upgraded our hibernate.jar from 3.3.2 to 3.5.2 the methods which executes rowcount functions have started to throw long to cast exception. 
> From the source code of hibernate, it is clear that for the features which will be implemented in 3.6
> some implementations are changed.
> #http://opensource.atlassian.com/projects/hibernate/browse/HHH-5138
> In 3.3.2 
> {code:title=RowCountProjection.java|borderStyle=solid}
> 	public Type[] getTypes(Criteria criteria, CriteriaQuery criteriaQuery) 
> 	throws HibernateException {
> 		return new Type[] { Hibernate.INTEGER };
> 	}
> {code}
> In 3.5.2 
> {code:title=RowCountProjection.java|borderStyle=solid}
> 		return new Type[] {
> 				getFunction( criteriaQuery ).getReturnType( null, criteriaQuery.getFactory() )
> 		};
> {code}
> But the definitions of the rowcount functions in both versions in same in Dialect.java
> {code}
> 	static {
> 		STANDARD_AGGREGATE_FUNCTIONS.put(
> 				"count",
> 				new StandardSQLFunction("count") {
> 					public Type getReturnType(Type columnType, Mapping mapping) {
> 						return Hibernate.LONG;
> 					}
> 					public String render(List args, SessionFactoryImplementor factory) {
> 						if ( args.size() > 1 ) {
> 							if ( "distinct".equalsIgnoreCase( args.get( 0 ).toString() ) ) {
> 								return renderCountDistinct( args );
> 							}
> 						}
> 						return super.render( args, factory );
> 					}
> {code}
> By this minor change in 3.5.2 all the project tests which executes count sql function are failing by throwing class cast exception

-- 
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