openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ravi P Palacherla <ravi.palache...@oracle.com>
Subject Re: ClasscastException when ClassCrietria is not used.
Date Tue, 11 Aug 2009 15:50:36 GMT

Hi All,

Can some one please help me with the question in this thread.

Do you think this JIRA is valid ? (or) should I just live with the openJPA
annotation ?

Thanks,
Ravi.


Ravi P Palacherla wrote:
> 
> Hi,
> 
> Created a JIRA for this:
> https://issues.apache.org/jira/browse/OPENJPA-1200
> 
> Regards,
> Ravi.
> 
> 
> Ravi P Palacherla wrote:
>> 
>> Hi Mike,
>> 
>> Please download the testcase from : 
>> http://n2.nabble.com/file/n3306514/openJPATestCase.zip
>> openJPATestCase.zip 
>> 
>> The following changes are needed :
>> build.xml ( point to proper "basedir" and "<path id="libs">" )
>> persistence.xml ( jdbc configurations.)
>> 
>> Regards,
>> Ravi.
>> 
>> 
>> 
>> Michael Dick wrote:
>>> 
>>> Hi Ravi,
>>> 
>>> Could you upload the testcase you mentioned? This sounds like an
>>> interesting
>>> issue, not sure I have the full picture at the moment, but it might
>>> warrant
>>> a JIRA for further investigation.
>>> 
>>> -mike
>>> 
>>> On Wed, Jul 22, 2009 at 4:43 PM, rpalache
>>> <ravi.palacherla@oracle.com>wrote:
>>> 
>>>>
>>>> Hi ,
>>>>
>>>> Here is the cause of the issue:
>>>>
>>>> getSelectSubclasses() of ValueMappingImpl.java is checking for
>>>> criteria.
>>>>
>>>> "return (_criteria) ? Select.SUBS_JOINABLE
>>>>                    : Select.SUBS_ANY_JOINABLE;"
>>>>
>>>> If criteria is selected then "Select.SUBS_JOINABLE" is returned which
>>>> will
>>>> generate a select statement that has subclass criteria ( in my E.g:
>>>> t0.ITEM_TYPE = ? )
>>>>
>>>> If criteria is not selected then "Select.SUBS_ANY_JOINABLE" is returned
>>>> which will not generate the above condition.
>>>>
>>>> So the question is if we have to make Select.SUBS_JOINABLE the default
>>>> behavior.
>>>>
>>>> I think throwing class cast exception is bad and hence the default
>>>> behavior
>>>> need to be changed to Select.SUBS_JOINABLE.
>>>>
>>>> Thanks in advance,
>>>> Ravi.
>>>>
>>>>
>>>> rpalache wrote:
>>>> >
>>>> > Hi All,
>>>> >
>>>> > I have an openJPA application with following entities:
>>>> >
>>>> > "Item" Entity with SINGLE_TABLE inheritance strategy.
>>>> >  DiscriminatorColumn on this ITEM_TYPE.
>>>> >
>>>> > "Book" and "Movie" entities extend "Item."
>>>> >
>>>> > "Artist" entity has 1-many relationship with "Book."
>>>> >
>>>> > The following results in classcastexception :
>>>> > Artist artist = em.find(Artist.class, "Herman Hess");
>>>> > List<Book> books= artist.getBooks();
>>>> >
>>>> > "artist.getBooks()" results in rows that contain both "Book"
>>>> and"Movie"
>>>> > hence I get the following classcast :
>>>> > Exception in thread "main" java.lang.ClassCastException:
>>>> > org.apache.openjpa.enhance.model$Movie$pcsubclass
>>>> >
>>>> > When I add @ElementClassCriteria to the Artist to Book relationship
>>>> then
>>>> > that resolves the issue.
>>>> > @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER,
>>>> > mappedBy="artist")
>>>> > @org.apache.openjpa.persistence.jdbc.ElementClassCriteria
>>>> > public List<Book> books;
>>>> >
>>>> > The reason for this issue is :
>>>> > without @ElementClassCriteria the SQL generated is :
>>>> > SELECT t0.UID1, t0.ITEM_TYPE, t0.title, t0.PAGE_COUNT FROM ITEM t0
>>>> WHERE
>>>> > t0.ARTIST = ?
>>>> > [params=(String) Herman Hess]
>>>> >
>>>> > With @ElementClassCriteria the SQL generated is :
>>>> > SELECT t0.UID1, t0.ITEM_TYPE, t0.title, t0.PAGE_COUNT FROM ITEM t0
>>>> WHERE
>>>> > t0.ARTIST = ? AND t0.ITEM_TYPE = ?
>>>> > [params=(String) Herman Hess, (String) BOOK]
>>>> >
>>>> > My questions regarding this is as follows:
>>>> >
>>>> > 1) @ElementClassCriteria is an openJPA specific annotation. Can I
>>>> have a
>>>> > JPA specific solution for this problem ?
>>>> >
>>>> >
>>>> > 2) If I have a very big application(s) and lots of relations with the
>>>> > above described behavior.
>>>> >    Then do I have to add it to each and every entity class that has
>>>> the
>>>> > relationship ?
>>>> >    Is there any property that I can define in the persistence.xml
>>>> rather
>>>> > than in entities ?
>>>> >
>>>> > I have a simple testcase demonstrating the issue.
>>>> > I can upload it if needed.
>>>> >
>>>> > Regards,
>>>> > Ravi.
>>>> >
>>>> >
>>>>
>>>> --
>>>> View this message in context:
>>>> http://n2.nabble.com/ClasscastException-when-ClassCrietria-is-not-used.-tp3290568p3306077.html
>>>> Sent from the OpenJPA Developers mailing list archive at Nabble.com.
>>>>
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/ClasscastException-when-ClassCrietria-is-not-used.-tp3290568p3424734.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.

Mime
View raw message