Hi,
> I'm a little confused by your example. You indicate that OpenJPA is
> returning an array of Objects? Did you mean that OpenJPA is returning a
> single Object?
For results of native queries, OpenJPA returns a List. But each member of
the list can be Object[] depending upon what has been selected by the query
and @SQLResultSetMapping.
For example, a SQL
SELECT p.name, p.age FROM PERSON p WHERE p.age > 20
may select 42 rows. In that case, OpenJPA will return a List of 42
elements where each element is a Object[] of length 2 with 0-th element
being p.name and 1-st element is p.age.
Beyer,Nathan wrote:
>
> Re: the question about the return type of the native query
>
> To clarify, this is what I see in OpenJPA ...
>
> // LOG is table name with a 'sequence' column/field of Java type 'long'
> final Query query = entityManager.createNativeQuery("SELECT
> MIN(e.sequence), MAX(e.sequence) FROM LOG e");
>
> If you use 'getResultList', then a List is return with one element, which
> is an Object[], so to process, you do this.
> final List result = query.getResultList();
> final Object[] e0 = (Object[])result.get(0);
> final Number minSeq = (Number)e0[0];
> final Number maxSeq = (Number)e0[1];
>
>
> If you use 'getSingleResult', then just the Object[] is returned, so to
> process, you do this.
> final Object result = query.getSingleResult();
> final Object[] e0 = (Object[])result;
> final Number minSeq = (Number)e0[0];
> final Number maxSeq = (Number)e0[1];
>
>
>
> -----Original Message-----
> From: Kevin Sutter [mailto:[EMAIL PROTECTED]
> Sent: Monday, July 21, 2008 12:01 PM
> To: [email protected]
> Subject: Re: what to expect - jpa spec or impl discretion
>
> Nathan,
> Comments embedded below. This is just my interpretation of the spec (I am
> a
> member of the JPA expert group, but I am not the lead). Posting to the
> EclipseLink forum might be interesting as well...
>
> On Mon, Jul 21, 2008 at 10:15 AM, Beyer,Nathan <[EMAIL PROTECTED]> wrote:
>
>> I'm trying to write a bit of code that's portable between JPA providers
>> and
>> ran into a few differences and I'd like to know if they are undefined
>> bits
>> of the spec or just me doing something silly.
>>
>> 1. 0 is considered null for primary key fields (@Id) of type int,
>> long
>> - OpenJPA DOES NOT do this, but other providers, such as EclipseLink do.
>> Is
>> this in the spec or up for debate?
>
>
> The spec does not identify valid values for a given annotation or field
> type. But, logic would say that 0 is a valid int or long and, thus,
> should
> be allowed as a primary key value. Of course, you could say that this
> wouldn't be a very solid value for a primary key, but it should be allowed
> in my book.
>
>
>>
>> 2. Return value of native queries is an Object[] or a List -
>> Consider
>> the following snippets
>>
>> // LOG is table name with a 'sequence' column/field of
>> Java
>> type 'long'
>> final Query query = entityManager.createNativeQuery("SELECT
>> MIN(e.sequence), MAX(e.sequence) FROM LOG e");
>> final Object result = query.getSingleResult();
>>
>> With OpenJPA a Object[] is returned, in EclipseLink a List
>> is returned. Is this defined anywhere? How can I define it.
>
>
> I'm a little confused by your example. You indicate that OpenJPA is
> returning an array of Objects? Did you mean that OpenJPA is returning a
> single Object? The JavaDoc for getSingleResult is like this:
>
> /**
> * Execute a SELECT query that returns a single result.
> * @return the result
> * @throws NoResultException if there is no result
> * @throws NonUniqueResultException if more than one result
> * @throws IllegalStateException if called for a Java
> * Persistence query language UPDATE or DELETE statement
> */
> public Object getSingleResult();
>
> So, I could see where someone might return a List (since it's an Object),
> but returning an array of Objects seems like a stretch.
>
> Given that, I would expect the result to be a single Object (not a List).
> If I wanted to process a List, then I would call getResultList. The
> example
> usage in the spec also supports this interpretation.
>
> Good luck with your comparisons,
> Kevin
>
>
>>
>>
>> Thanks,
>> -Nathan
>>
>> ----------------------------------------------------------------------
>> CONFIDENTIALITY NOTICE This message and any included attachments are from
>> Cerner Corporation and are intended only for the addressee. The
>> information
>> contained in this message is confidential and may constitute inside or
>> non-public information under international, federal, or state securities
>> laws. Unauthorized forwarding, printing, copying, distribution, or use of
>> such information is strictly prohibited and may be unlawful. If you are
>> not
>> the addressee, please promptly delete this message and notify the sender
>> of
>> the delivery error by e-mail or you may call Cerner's corporate offices
>> in
>> Kansas City, Missouri, U.S.A at (+1) (816)221-1024.
>
>
--
View this message in context:
http://n2.nabble.com/what-to-expect---jpa-spec-or-impl-discretion-tp575285p575455.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.