[jboss-user] [EJB 3.0] - @Enumerated with @ID Usage Issue

fkifle do-not-reply at jboss.com
Wed Sep 12 08:43:57 EDT 2007


I have an entity associated with an Oracle database table that has one column of type VarChar2(20) as the Primary Key which is used to store Java 1.5 enum values.  The env. I am using is Jboss 4.1.2-GA as app server.  I am getting an exception whenever I try to retrieve and store the values to another table.  The enum, entity and exception follows:

----
/**
 * List contains all Inspection Member Types
 */
public enum InspectionPersonnelTypeEnum implements Serializable {

    AIRCREW("Air Crew Member"), INSPECTOR("Inspector"), MONITOR("Monitor");

    private String displayName;


    private InspectionPersonnelTypeEnum(String displayName) {
        this.displayName = displayName;
    }

    public String getDisplayName() {
        return displayName;
    }
}

------

@Entity
@Table(name = "STR_INSP_PERSON_TYPE")
public class InspectionPersonnelTypeEntityEJB implements Serializable {

    private InspectionPersonnelTypeEnum inspectionPersonType;

    @Id
    @Column(name = "INSPECTION_PERSON_TYPE"
    @Enumerated(value = EnumType.STRING)
    public InspectionPersonnelTypeEnum getInspectionPersonType() {
        return inspectionPersonType;
    }

    public void setInspectionPersonType(InspectionPersonnelTypeEnum inspectionPersonType) {
        this.inspectionPersonType = inspectionPersonType;
    }


------
When trying to retrieve value from that column (e.g. populate the entity with a EntityManager.find()) I get the following exception:

Caused by: org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
at org.hibernate.type.SerializableType.get(SerializableType.java:39)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
at org.hibernate.loader.Loader.doQuery(Loader.java:701)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1994)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:36)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:565)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1716)
at org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:454)
at org.hibernate.engine.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:797)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:241)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:64)

----

When I try to save a value stored in the table (@OneToMany
    @JoinTable(name = "STR_INSP_PERSON_ROLE",
               joinColumns = {@JoinColumn(name = "INSP_PERSON_ID")},
               inverseJoinColumns = {@JoinColumn(name = "INSPECTION_PERSON_TYPE")})
    public List getInspPersonTypes() {
        return this.inspPersonTypes;
    }) 
I get the following exception:

Caused by: java.sql.BatchUpdateException: ORA-12899: value too large for column "ACES_LIVE"."STR_INSP_PERSON_ROLE"."INSPECTION_PERSON_TYPE" (actual: 274, maximum: 20)
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10698)
at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:519)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)

---
Is this a known issue? Any help would be most welcomed.

Thanks
Frezer 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4083409#4083409

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4083409



More information about the jboss-user mailing list