You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by jc222 <jc...@free.fr> on 2008/12/14 14:30:48 UTC
ManagedInterface
Hi all :-)
I'm trying to use OpenJPA with an eclipse eCore model.
The model is defined with java interfaces and java class that implements the
interfaces:
Here is an example:
@ManagedInterface
@Embeddable
public interface Param extends EObject {
double getParam();
void setParam(double);
}
@ManagedInterface
@Entity
@Table(name = "table")
public interface Table extends EObject {
@Embedded
@AttributeOverride(name = "param", column = @Column(name = "newparam"))
Param getNewParam();
void setNewParam(Param param);
@Transient
int getFoo();
void setFoo();
}
public class ParamImpl extends EObjectImpl implements Param {
....
}
public class Table Impl extends EObjectImpl implements Table {
....
}
-----------------------
The DB shema (generated with MappingTool) is good for me.
My code to persist:
Table table= TableFactoryImpl.eINSTANCE.createTable();
em.getTransaction().begin();
em.persist(table);
em.getTransaction().commit();
But I can't persist TableImpl objects. There is no mapping between TableImpl
& Table. How can I do that ?
<openjpa-1.2.0-r422266:683325 nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance
"com.e222.impl.TableImpl@1c9e67a (id: 0)" to PersistenceCapable failed.
Ensure that it has been enhanced.
FailedObject: com.e222.impl.TableImpl@1c9e67a (id: 0)
at
org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4353)
at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2419)
at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2280)
at
org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1021)
at
org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:645)
at com.e222..EJBTable.createTable(EJBTable.java:65)
at test.e222.EJBTableTest.testCreateT(EJBTableTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:230)
at junit.framework.TestSuite.run(TestSuite.java:225)
at
org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
If I use
OpenJPAEntityManager em = ...;
Table table= em.createInstance(Table.class);
As in documentation.
I raise an exception when I set my transient field foo ...
Any idea ?
Many Thanks
--
View this message in context: http://n2.nabble.com/ManagedInterface-tp1654454p1654454.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.
Re: ManagedInterface
Posted by jc222 <jc...@free.fr>.
Hi - I have a quick question. Have you specified Table in a <class> element
in your persistence.xml file?
Yes, all my persistence classes are in the persistence.xml file.
In fact, the problem can be summarised as: "How can I manage the transient
fields if I use ManageInterfaces"
JC
--
View this message in context: http://n2.nabble.com/ManagedInterface-tp1654454p1662605.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.
Re: ManagedInterface
Posted by Dianne Richards <di...@gmail.com>.
Hi - I have a quick question. Have you specified Table in a <class> element
in your persistence.xml file?
On Sun, Dec 14, 2008 at 7:30 AM, jc222 <jc...@free.fr> wrote:
>
> Hi all :-)
>
> I'm trying to use OpenJPA with an eclipse eCore model.
>
> The model is defined with java interfaces and java class that implements
> the
> interfaces:
>
> Here is an example:
>
> @ManagedInterface
> @Embeddable
> public interface Param extends EObject {
> double getParam();
> void setParam(double);
> }
>
> @ManagedInterface
> @Entity
> @Table(name = "table")
> public interface Table extends EObject {
> @Embedded
> @AttributeOverride(name = "param", column = @Column(name = "newparam"))
> Param getNewParam();
> void setNewParam(Param param);
> @Transient
> int getFoo();
> void setFoo();
> }
>
> public class ParamImpl extends EObjectImpl implements Param {
> ....
> }
>
> public class Table Impl extends EObjectImpl implements Table {
> ....
> }
>
> -----------------------
>
> The DB shema (generated with MappingTool) is good for me.
>
> My code to persist:
>
> Table table= TableFactoryImpl.eINSTANCE.createTable();
> em.getTransaction().begin();
> em.persist(table);
> em.getTransaction().commit();
>
>
> But I can't persist TableImpl objects. There is no mapping between
> TableImpl
> & Table. How can I do that ?
>
> <openjpa-1.2.0-r422266:683325 nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance
> "com.e222.impl.TableImpl@1c9e67a (id: 0)" to PersistenceCapable failed.
> Ensure that it has been enhanced.
> FailedObject: com.e222.impl.TableImpl@1c9e67a (id: 0)
> at
>
> org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4353)
> at
> org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2419)
> at
> org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2280)
> at
>
> org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1021)
> at
>
> org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:645)
> at com.e222..EJBTable.createTable(EJBTable.java:65)
> at test.e222.EJBTableTest.testCreateT(EJBTableTest.java:37)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at junit.framework.TestCase.runTest(TestCase.java:164)
> at junit.framework.TestCase.runBare(TestCase.java:130)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:120)
> at junit.framework.TestSuite.runTest(TestSuite.java:230)
> at junit.framework.TestSuite.run(TestSuite.java:225)
> at
>
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
> at
>
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
> at
>
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>
> If I use
> OpenJPAEntityManager em = ...;
> Table table= em.createInstance(Table.class);
>
> As in documentation.
> I raise an exception when I set my transient field foo ...
>
> Any idea ?
> Many Thanks
>
> --
> View this message in context:
> http://n2.nabble.com/ManagedInterface-tp1654454p1654454.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>
>
--
Thanks - Dianne