So the result of a SELECT MIN(e.sequence), MAX(e.sequence) should be an Object[] in which the first element is the MIN and the second element the MAX.
If you use getResultList, then the result will be a List each element of which is an Object[2]. If you call getSingleResult, the result will be a single Object[2].
Craig On Jul 21, 2008, at 10:45 AM, Pinaki Poddar wrote:
Hi,I'm a little confused by your example. You indicate that OpenJPA isreturning an array of Objects? Did you mean that OpenJPA is returning asingle 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 queryand @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 42elements where each element is a Object[] of length 2 with 0-th elementbeing 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, whichis 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 toprocess, 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 amamember of the JPA expert group, but I am not the lead). Posting to theEclipseLink 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 providersandran into a few differences and I'd like to know if they are undefinedbits 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 fieldtype. But, logic would say that 0 is a valid int or long and, thus, shouldbe 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 allowedin 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 ofJava 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 Listis returned. Is this defined anywhere? How can I define it.I'm a little confused by your example. You indicate that OpenJPA isreturning an array of Objects? Did you mean that OpenJPA is returning asingle 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, KevinThanks, -Nathan ----------------------------------------------------------------------CONFIDENTIALITY NOTICE This message and any included attachments are fromCerner Corporation and are intended only for the addressee. The informationcontained 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 arenotthe addressee, please promptly delete this message and notify the senderofthe delivery error by e-mail or you may call Cerner's corporate officesin 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.
Craig L Russell Architect, Sun Java Enterprise System http://java.sun.com/products/jdo 408 276-5638 mailto:[EMAIL PROTECTED] P.S. A good JDO? O, Gasp!
smime.p7s
Description: S/MIME cryptographic signature
