I just wrote a test case that uses enum literals, and it seems to work
in trunk at least. I just checked in the changes; take a look at
TestEnumsInJPQL.java [1] for an example.

-Patrick

[1] 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/fields/TestEnumsInJPQL.java?view=markup

On Nov 13, 2007 8:42 AM, Patrick Linskey <[EMAIL PROTECTED]> wrote:
> Per section 4.6.1, it looks like a bug.
>
> -Patrick
>
>
>
>
> On Nov 13, 2007 7:44 AM, Marc Siegel <[EMAIL PROTECTED]> wrote:
> > Hi Chris,
> >
> > I've determined that the ordinal step in your example is unnecessary.
> > If you don't mind setting a parameter on your query, this will suffice:
> >
> > "SELECT i FROM Item WHERE i.status = :value"
> > query.setParameter("value", ItemStatus.New)
> >
> > The problem I was pointing out is that the JPQL standard allows use of
> > Enum Literals in query text, not just setting parameters, but that
> > usage does not appear to be supported in OpenJPA.
> >
> > -Marc
> >
> >
> >
> > On 11/13/07, Christian Defoy <[EMAIL PROTECTED]> wrote:
> > > I always use something of the form
> > >
> > >     "SELECT i FROM Item WHERE i.status = :value"
> > >     query.setParameter( "value", ItemStatus.New.ordinal() );
> > >
> > > since my enums are materialized as integers in the DB.  It is related
> > > to the @Enumerated annotation.  Using that annotation, you can specify
> > > that your enum type should be stored as an ordinal or as a String.
> > > You can maybe try to specify your enum as a String and then see if
> > > what you try will work any better.
> > >
> > > Christian
> > >
> > >
> > > On 11/12/07, Marc Siegel <[EMAIL PROTECTED]> wrote:
> > > > Hi folks,
> > > >
> > > > Say I have an entity Item, with an @Enumerated column 'status'.
> > > >
> > > > How can I have a named query like this:
> > > >    "SELECT i FROM Item WHERE i.status = 'New' "
> > > >
> > > > I've tried
> > > >    "SELECT i FROM Item WHERE i.status = 'New' "
> > > >    "SELECT i FROM Item WHERE i.status.name = 'New' "
> > > >    "SELECT i FROM Item WHERE i.status = ItemStatus.New "
> > > >    "SELECT i FROM Item WHERE i.status = com.xyz.lib.ItemStatus.New "
> > > >
> > > > To no avail. Any help?
> > > >
> > > > Thanks
> > > > -Marc
> > > >
> > >
> >
>
>
>
> --
> Patrick Linskey
> 202 669 5907
>



-- 
Patrick Linskey
202 669 5907

Reply via email to