You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Dzmitry Kazimirchyk (Created) (JIRA)" <ji...@apache.org> on 2011/10/05 17:14:34 UTC

[jira] [Created] (CAY-1628) ClassCastException when using java.util.Set or java.util.Map as collection type for to-many relationship

ClassCastException when using java.util.Set or java.util.Map as collection type for to-many relationship
--------------------------------------------------------------------------------------------------------

                 Key: CAY-1628
                 URL: https://issues.apache.org/jira/browse/CAY-1628
             Project: Cayenne
          Issue Type: Bug
          Components: Core Library
    Affects Versions: 3.1M3
            Reporter: Dzmitry Kazimirchyk
            Assignee: Dzmitry Kazimirchyk


ClassCastException (PersistentObjectSet to PersistentObject or PersistentObjectMap to PersistentObject) is thrown if using java.util.Set or java.util.Map as collection type for to-many relationship:

Exception in thread "main" java.lang.ClassCastException: org.apache.cayenne.util.PersistentObjectSet cannot be cast to org.apache.cayenne.Persistent
	at org.apache.cayenne.util.ObjectContextQueryAction.interceptObjectConversion(ObjectContextQueryAction.java:137)
	at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:97)
	at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:990)
	at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:336)
	at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:104)
	at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:91)
	at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:990)
	at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:979)
	at org.apache.cayenne.util.RelationshipFault.resolveFromDB(RelationshipFault.java:89)
	at org.apache.cayenne.util.PersistentObjectSet.resolvedObjectSet(PersistentObjectSet.java:237)
	at org.apache.cayenne.util.PersistentObjectSet.size(PersistentObjectSet.java:210)

When parent context intercepts relationship query and finds in its ObjectStore something which is not List it wraps it in a List and then returns as a response. After that while transfering result to target context it tries to cast all objects from the List to PersistentObject, so we get ClassCastException.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Closed] (CAY-1628) ClassCastException when using java.util.Set or java.util.Map as collection type for to-many relationship

Posted by "Dzmitry Kazimirchyk (Closed) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CAY-1628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dzmitry Kazimirchyk closed CAY-1628.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 3.1M4
    
> ClassCastException when using java.util.Set or java.util.Map as collection type for to-many relationship
> --------------------------------------------------------------------------------------------------------
>
>                 Key: CAY-1628
>                 URL: https://issues.apache.org/jira/browse/CAY-1628
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Core Library
>    Affects Versions: 3.1M3
>            Reporter: Dzmitry Kazimirchyk
>            Assignee: Dzmitry Kazimirchyk
>             Fix For: 3.1M4
>
>
> ClassCastException (PersistentObjectSet to PersistentObject or PersistentObjectMap to PersistentObject) is thrown if using java.util.Set or java.util.Map as collection type for to-many relationship:
> Exception in thread "main" java.lang.ClassCastException: org.apache.cayenne.util.PersistentObjectSet cannot be cast to org.apache.cayenne.Persistent
> 	at org.apache.cayenne.util.ObjectContextQueryAction.interceptObjectConversion(ObjectContextQueryAction.java:137)
> 	at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:97)
> 	at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:990)
> 	at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:336)
> 	at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:104)
> 	at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:91)
> 	at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:990)
> 	at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:979)
> 	at org.apache.cayenne.util.RelationshipFault.resolveFromDB(RelationshipFault.java:89)
> 	at org.apache.cayenne.util.PersistentObjectSet.resolvedObjectSet(PersistentObjectSet.java:237)
> 	at org.apache.cayenne.util.PersistentObjectSet.size(PersistentObjectSet.java:210)
> When parent context intercepts relationship query and finds in its ObjectStore something which is not List it wraps it in a List and then returns as a response. After that while transfering result to target context it tries to cast all objects from the List to PersistentObject, so we get ClassCastException.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira