This is because Hibernate only understands Java enums, not Scala
Enumerations. However, you could easily write a custom type mapping
for Scala enumerations and use the Hibernate @Type annotation - it's
not JPA canon (why didn't they forsee the need for customized
mappings?), but if you're using Hibernate anyway shouldn't be a big
deal.

Kris

On Fri, Sep 19, 2008 at 3:20 PM, Charles F. Munat <[EMAIL PROTECTED]> wrote:
>
> I thought about that. Essentially, that's what Hibernate is supposed to
> do, though. It only saves the integer value. (At least, that's what
> @Enumerated(EnumType.ORDINAL) is supposed to mean, if I understand it
> correctly.)
>
> I'm still curious as to why the code I have doesn't work, but if no one
> else knows, then I guess I'll have to do it manually as you suggest.
>
> Thanks.
>
> Chas.
>
> David Pollak wrote:
>> Rather than storing the Gender enumeration in the RDBMS, I'd suggest
>> storing the Int value of the enumeration.
>>
>>    @Column{val name="gender"}
>>    var genderInt : Int = _
>>
>>
>>     def gender: Gender = Gender(genderInt)
>>     def gender_=(what: Gender.Value) = ....
>>
>>
>>
>> Charles F. Munat wrote:
>>> I'm still trying to get a Gender enumeration to work with JPA. The
>>> problem now seems to be on the JPA end (I'm using the JPADemo code that
>>> Derek provided).
>>>
>>> I get the following error:
>>> javax.persistence.PersistenceException: org.hibernate.MappingException:
>>> Could not determine type for: scala.Enumeration$Value, for columns:
>>> [org.hibernate.mapping.Column(gender)]
>>>
>>> Here is the relevant code:
>>>
>>>
>>> @serializable
>>> object Gender extends Enumeration {
>>>    type Gender = Value
>>>    val Unknown = Value(0, "Unknown")
>>>    val Male = Value(1, "Male")
>>>    val Female = Value(2, "Female")
>>> }
>>>
>>> import Gender._
>>>
>>> @Entity
>>> @Table{val name = "USERS"}
>>> class User {
>>>    @Id
>>>    @GeneratedValue{val strategy = GenerationType.AUTO}
>>>    var id : Long = _
>>>
>>>    @Column{val name="NAME_LAST"}
>>>    var nameLast : String = ""
>>>
>>>    @Column{val name="NAME_FIRST"}
>>>    var nameFirst : String = ""
>>>
>>>    var username : String = ""
>>>
>>>    @Column{val name="EMAIL_ADDRESS"}
>>>    var emailAddress : String = ""
>>>
>>>    @Enumerated(EnumType.ORDINAL)
>>>    var gender : Gender = _
>>>
>>> ...
>>> }
>>>
>>> Also, where is the best place to put the Gender enumeration so that it
>>> is visible both in the persistence project and in the webapp?
>>>
>>> Thanks for any and all help.
>>>
>>> Chas.
>>>
>>>
>>
>>
>> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to