Обсуждение: Enums - from java to jpa

Поиск
Список
Период
Сортировка

Enums - from java to jpa

От
The Jasper
Дата:
L.S.,

We are updating out application to make use of JPA. We have also
introduced postgres enums into our database. Naturally we also have
java enums which mirror the postgres enums. Now...how do I get JPA to
understand that it has different types at either end which are
actually the same. I mostly get ClassCastExceptions where PGObject is
being cast to String. I can't get rid of an enum definition at either
end, I'm stuck with that. So I need to make JPA understand how to map
from one to the other. We use Hibernate as our JPA implementation.

--
Il se peut faire qu'il y ait des vraies démonstrations; mais cela
n'est pas certain. Ainsi, cela ne montre autre chose, sinon qu'il
n'est pas certain que tout soit incertain, à la gloire du pyrrhonisme.
-B. Pascal

Re: Enums - from java to jpa

От
Guy Rouillier
Дата:
The Jasper wrote:
> L.S.,
>
> We are updating out application to make use of JPA. We have also
> introduced postgres enums into our database. Naturally we also have
> java enums which mirror the postgres enums. Now...how do I get JPA to
> understand that it has different types at either end which are
> actually the same. I mostly get ClassCastExceptions where PGObject is
> being cast to String. I can't get rid of an enum definition at either
> end, I'm stuck with that. So I need to make JPA understand how to map
> from one to the other. We use Hibernate as our JPA implementation.
>

Our project is also using JPA via Hibernate, but with Oracle on the back
end.  Here is how we annotate our columns that access Java enums:

   @Column(name = "PREGION_ID", precision = 20, scale = 0, nullable = true)
   @Type(type = "com.masergy.sales360.persistence.GenericEnumUserType",
parameters = {
     @Parameter(name = "enumClass", value =
"com.masergy.sales360.client.model.OmsPricingRegionEnum"),
     @Parameter(name = "identifierMethod", value = "toInt"),
     @Parameter(name = "valueOfMethod", value = "fromInt") })

GenericEnumUserType implements UserType, ParameterizedType (Hibernate
interfaces.)

--
Guy Rouillier