openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-313) list of objects returned by query partially correct
Date Mon, 13 Aug 2007 16:11:30 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12519452
] 

Kevin Sutter commented on OPENJPA-313:
--------------------------------------

Catalina,
Thanks for the patch.  A couple of questions and/or comments though...

It looks like this updated code is only if we're working with an OpenJPAID oid and subs is
true.  I can understand the oid part, but what exactly is the subs boolean used for?  I know
this wasn't your original code, but a quick glance at the code shows a need for a javadoc
update at least.  You must have spent some time figuring out how this parameter is used. 
It would be helpful to put add to the javadoc for this method to explain what the subs parameter
is used for (at least).  Thanks.

Also, I really dislike empty catch clauses.  I can't tell if this was on purpose or an oversight.
 It also forces me to think through the logic whether this exception clause was necessary
or not.  I think the empty clause is okay, but we should at least put a comment in the clause
indicating why we can safely ignore this exception.

I also personally don't like the idea of comparing strings for the strategy type, but it looks
like we're just following suit from the existing code.  We can only change so much at a time,
I suppose...  :-)

Thanks again,
Kevin

> list of objects returned by query partially correct
> ---------------------------------------------------
>
>                 Key: OPENJPA-313
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-313
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jdbc
>            Reporter: Catalina Wei
>             Fix For: 1.0.0
>
>         Attachments: jpa1.0.0.patch, OPENJPA-313.r564688.patch
>
>
> We have an object inheritance hierarchy as follows.
>     FixedAnnuity extends Annuity
>     EquityAnnuity extends Annuity
> Then we have following code:
>     List<IAnnuity> annuities = getServerAdapter().findHolderAnnuities(holder);
> from which we expect to have a list of "Annuity" (could be Annuity, FixedAnnuity or 
> EquityAnnuity) from following code
> 	EntityManager em = null;
> 	try{		 						
> 		em = factory.createEntityManager();
> 		Query query = em.createNamedQuery("GetHolderAnnuities");
> 		query.setParameter("holderId", holder.getId());		
> 		return (List<IAnnuity>) query.getResultList();
> 	}
> Here is the query
> 	<named-query name="GetHolderAnnuities">
> 	<query>SELECT a FROM Annuity AS a WHERE a.annuityHolderId = :holderId</query>
> 	</named-query>
> In the end, the list returned only the first object with the correct Object, the 
> rest of the objects all casted into the basic type "Annuity"
> e.g. we have following code:
> 	EntityManager em = null;
> 	try{		 						
> 		em = factory.createEntityManager();
> 		Query query = em.createNamedQuery("GetHolderAnnuities");
> 		query.setParameter("holderId", holder.getId());		
> 		return (List<IAnnuity>) query.getResultList();
> 	}
> 	
> 	FixedAnnuity fixed1 = new FixedAnnuity();
> 	fixed1.setHolder(holder);
> 	EquityAnnuity equity1 = new EquityAnnuity();
> 	equity1.setHolder(holder);
> 	FixedAnnuity fixed1 = new FixedAnnuity();
> 	fixed2.setHolder(holder);
> 	EquityAnnuity equity2 = new EquityAnnuity();
> 	equity2.setHolder(holder);
> 	
> 	List<IAnnuity> annuities = getServerAdapter().findHolderAnnuities(holder);
> 	
> Only annuities.get(0) returns the correct object as FixedAnnuity, the other 3 
> objects returned all returned as Annuity 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message