Hi,
switching from Oracle Toplink to
EclipseLink 1.0.1
i get an Exception in eclipseLink when
using a Converter
which should map from Boolean to String
(YES, NO). In Toplink (older)
it works fine.
Here is my Entity Class, persistence.xml
and the exception stacktrace.
##############################################################################
@Entity
@Table(name = "PERSON", schema = "SYNCRO")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@Converter(name="ConverterBoolean",
converterClass=jpa.ConverterBoolean.class)
abstract public class Person extends OMSBean implements
java.io.Serializable {
...
@Column(name = "adult", nullable = false, length = 80)
@Convert("ConverterBoolean")
protected boolean adult;
public boolean isAdult() { return adult;}
public void setAdult(boolean adult) {
PropertyChangeEvent pce = new
PropertyChangeEvent(this, "adult", this.adult, adult);
this.adult = adult;
this.firePropertyChange(pce);
}
...
...
##############################################################################
Persistence.xml:
<persistence-unit name ="pu-oracle">
<description>Basic javaSE
application containing JSR 220 entity beans</description>
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>model.Person</class>
<properties>
<!-- JDBC
connection properties -->
<property name="eclipselink.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="eclipselink.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<!--
Customized Property Mappings -->
<property name="eclipselink.session.customizer" value="jpa.ConverterOMSDatum"/>
<property name="eclipselink.session.customizer" value="jpa.ConverterBoolean"/>
...
##############################################################################
[EL Warning]: 2008.11.04
14:32:05.165--ServerSession(14694596)--Ignoring default serialization on
element [protected boolean model.Person.adult] within entity class [class
model.Person] since a @Convert is specified.
8375 [AWT-EventQueue-0] ERROR
view.MainFrame - Exception [EclipseLink-28014] (Eclipse Persistence Services -
1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Exception was
thrown while processing property [eclipselink.session.customizer] with value
[jpa.ConverterBoolean].
Internal Exception: java.lang.ClassCastException:
jpa.ConverterBoolean cannot be cast to
org.eclipse.persistence.config.SessionCustomizer
Local Exception Stack:
Exception [EclipseLink-28014] (Eclipse
Persistence Services - 1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Exception was
thrown while processing property [eclipselink.session.customizer] with value
[jpa.ConverterBoolean].
Internal Exception: java.lang.ClassCastException:
jpa.ConverterBoolean cannot be cast to org.eclipse.persistence.config.SessionCustomizer
at
org.eclipse.persistence.exceptions.EntityManagerSetupException.failedWhileProcessingProperty(EntityManagerSetupException.java:178)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.processSessionCustomizer(EntityManagerSetupImpl.java:1222)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateServerSession(EntityManagerSetupImpl.java:1198)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:237)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:69)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:118)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:112)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:100)
at view.Syncro_absatzApp.startup(Syncro_absatzApp.java:117)
at
org.jdesktop.application.Application$1.run(Application.java:171)
at
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at
java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.lang.ClassCastException:
jpa.ConverterBoolean cannot be cast to
org.eclipse.persistence.config.SessionCustomizer
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.processSessionCustomizer(EntityManagerSetupImpl.java:1219)
... 16 more
ERROR: JDWP Unable to get JNI 1.2
environment, jvm->GetEnv() return code = -2
JDWP exit error
AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820]