[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-3828) Criteria: Restriction whith class does not work

Agustino Alim (JIRA) noreply at atlassian.com
Sun Jul 19 08:37:12 EDT 2009


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

Agustino Alim commented on HHH-3828:
------------------------------------

I also face the same issue

Class[] clazz = {SubCompany.class, SubDirector.class};
Session session = HibernateUtil.getSession();
Criteria c = session.createCriteria(Company.class);
c.add(Restrictions.in("class", clazz));


I get this error
Exception in thread "main" java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.String
	at org.hibernate.type.StringType.toString(StringType.java:67)
	at org.hibernate.type.NullableType.nullSafeToString(NullableType.java:117)
	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:158)
	at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
	at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1728)
	at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1699)
	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1589)
	at org.hibernate.loader.Loader.doQuery(Loader.java:696)

> Criteria: Restriction whith class does not work
> -----------------------------------------------
>
>                 Key: HHH-3828
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3828
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: query-criteria
>    Affects Versions: 3.3.1
>         Environment: Oracle, HSQLDB
>            Reporter: Kai Prünte
>
> The following line does not work:
>   Restrictions.eq("class", Bike.class)
> because 
>   SingleTableEntityPersister.getDiscriminatorSQLValue()
> returns the discriminator value quoted with single quotes. However JDBC needs the string without quotes.
> Workaround:
>   Restrictions.eq("class", Bike.class.getName())
> This works fine for the default discriminator values
> Patch in CriteriaQueryTranslator.getTypedValue(Criteria subcriteria, String propertyName, Object value):
>   if(stringValue != null && stringValue.length() > 2 && stringValue.startsWith("'") && stringValue.endsWith("'") ) {
>     // remove the single quotes
>     stringValue = stringValue.substring(1, stringValue.length() - 1);
>   }

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