What is your objective? Do you want some non-JPA application to see them in the database as Strings?

At some point you have add these Enums to the collection one at a time. You can use an addEnum() method or an Entity listener to convert them to Strings at that point one at a time. And a subclass of the Collection type to getEnum() from the Collection when you fetch them back.

new MyStringEnumHashSet<MyStringEnumType>()

On 3/28/2009 9:27 PM, Tedman Leung wrote:
No, I'm talking about when the enum is in a collection.

i.e.

   Private HashSet<Gender> genders=new HashSet<Gender>();

So no, either the @Enumerated helps, nor does calling name() or toString as neither are possible.

I'm storing a Collection of enums , not a single Enum.

There seems to be no examples of this nor any documentation about the ability to do this that I can find. The default seems to use the ordinal value both for table generation and storage value.




On Sat, Mar 28, 2009 at 01:56:13PM -0700, Paul Copeland wrote:
Hi - This is from the OpenJPA relations example -

   @Basic @Enumerated(EnumType.STRING)
   private Gender gender;

   public static enum Gender { MALE, FEMALE }

  public void setGender(Gender gender) {
       this.gender = gender;
  }

See section 12.8.1.2 in the OpenJPA Overview

- Paul

On 3/28/2009 1:33 PM, catalina wei wrote:
Ted,
If you are using Java 5, then you could use name() or toString() API on the
Enum to get the name of the enum constant in String value.

Catalina

On Wed, Mar 25, 2009 at 9:48 AM, Tedman Leung <ted...@sfu.ca> wrote:

Anyone know how to store a collection of enums as Strings instead of their
ordinal values? (preferably with annotations...)

i.e.
       @ManyToMany
       private Set<MyEnum> myEnums=new HashSet<MyEnum>();


--
                                                          Ted Leung
                                                          ted...@sfu.ca

It's time for a new bike when the bulb in your shift light burns out.



Reply via email to