| Author |
EJB3.0 persistence API
|
Jack Lau
Ranch Hand
Joined: Aug 30, 2002
Posts: 166
|
|
Hello, I have a question about using EJB3.0 persistence API. If I write a query which join some tables e.g 3 tables (a, b, c), so there are number of fields (a.f1, b.f1, c.f2) retrieved. I am using query.getResultList() to return a Vector, but I want the result is an object collection so that I can use it to call it's method to retrieve the value of field, does anyone how to do this? Thanks, Jack
|
 |
Bill Shirley
Ranch Hand
Joined: Nov 08, 2007
Posts: 457
|
|
Originally posted by Jack Lau: Hello, I have a question about using EJB3.0 persistence API. If I write a query which join some tables e.g 3 tables (a, b, c), so there are number of fields (a.f1, b.f1, c.f2) retrieved. I am using query.getResultList() to return a Vector, but I want the result is an object collection so that I can use it to call it's method to retrieve the value of field, does anyone how to do this? Thanks, Jack
getResultList() return a (non-generified java.util) List. List is a collection. It is highly suggested (and all java.util Collections do), that Collections should have a constructor that takes a collection (and adds its elements into the new collection). If you want the 5.0 generified version of some collection: new LinkedList<MyTypes>(resultList); will do it,
|
Bill Shirley - bshirley - frazerbilt.com
if (Posts < 30) you.read( JavaRanchFAQ);
|
 |
Mike Keith
author
Ranch Hand
Joined: Jul 14, 2005
Posts: 304
|
|
Jack, The result of getResultList() is a List. If you simply returned a single type of entity from the query then you would be able to do the following: If you have a SELECT clause containing multiple items then each element of the List will be an array of Object (Object[]) that contains all of the select items. Unfortunately this is an array, not a Collection, and you can't narrow it, even if the objects stored in it were the same type (which is not very likely anyway).
|
-Mike
Pro JPA 2: Mastering the Java Persistence API
|
 |
Jack Lau
Ranch Hand
Joined: Aug 30, 2002
Posts: 166
|
|
Thanks! But if I want to return more than 1 entity, I found that there is an anontation called @SqlResultSetMapping but I do not know how to use it... How to get the result and what is the return type of the @SqlResultSetMapping ? Thanks, Jack
|
 |
Mike Keith
author
Ranch Hand
Joined: Jul 14, 2005
Posts: 304
|
|
|
I wouldn't recommend using raw SQL queries and @SqlResultSetMapping annotations. The result will be the same as if you used JPQL, except that they will be more work to map the result and less portable.
|
 |
 |
|
|
subject: EJB3.0 persistence API
|
|
|