You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Thomas G Lawless <tg...@us.ibm.com> on 2009/08/13 21:30:30 UTC
OpenJPA and JAXB
I have been experimenting with OpenJPA and JAXB with regard to storing and
retrieving XML from an DB2 9.7 database and I've run into a problem. I've
gone through the steps of creating a simple XML schema and generating the
Java classes using xjc. I have followed the steps in the OpenJPA manual so
I have not defined a name space in the schema and I have added the
@XmlRootElement annotation to the generated root class. I have created
sample code that successfully creates an instance of my entity with the
JAXB property and I can persist the entity to the database. I can also
retrieve the entity from the database and the XML is unmarshalled
successfully as long as I use a single instance of the EntityManager to do
both tasks. What I've found is if I use a separate instance on
EntityManager to retrieve the entity, I receive an error along the line of
this:
org.apache.openjpa.persistence.PersistenceException:
javax.xml.bind.JAXBElement incompatible with.....
This only happens if I use a instance of EntityManager that is different
then the instance used to persist the original record. For example, if I
do the following:
EntityManagerFactory emFactory = .......
EntityManager em = emFactory............
em.getTransaction().begin();............
/*.
Create the instance of the JAXB class and the entity.
Populate both classes with data.
Set the JAXB property of the entity class
*/
em.persist(.....);
em.getTransaction().commit();
MyEntity entity = em.find(.......);
The above code executes without error. I've checked the db record and it
is correct. I have also validated the XML in the db against the schema
used to generate the JAXB classes and there are no issues there either. If
I run another program that tries to retrieve the same entity as above....
i.e.
EntityManagerFactory emFactory = .......
EntityManager em = emFactory...........
MyEntity entity = em.find(.......);....
the exception noted above is thrown. I am currently using OpenJPA 1.2.1
and JAXB 2.0.5. I have also tried this with JAXB 2.1.12 and I receive the
same result. Am I doing something wrong? Could this be a bug in OpenJPA?
Re: OpenJPA and JAXB
Posted by Pinaki Poddar <pp...@apache.org>.
Hi,
You may find these URLs relevant..
[1] http://n2.nabble.com/Fluid,-SDO-persistence-with-JPA-td2992382.html
[2] http://people.apache.org/~ppoddar/fluid/site/welcome.html
Thomas G Lawless wrote:
>
>
>
> I have been experimenting with OpenJPA and JAXB with regard to storing and
> retrieving XML from an DB2 9.7 database and I've run into a problem. I've
> gone through the steps of creating a simple XML schema and generating the
> Java classes using xjc. I have followed the steps in the OpenJPA manual
> so
> I have not defined a name space in the schema and I have added the
> @XmlRootElement annotation to the generated root class. I have created
> sample code that successfully creates an instance of my entity with the
> JAXB property and I can persist the entity to the database. I can also
> retrieve the entity from the database and the XML is unmarshalled
> successfully as long as I use a single instance of the EntityManager to do
> both tasks. What I've found is if I use a separate instance on
> EntityManager to retrieve the entity, I receive an error along the line of
> this:
>
> org.apache.openjpa.persistence.PersistenceException:
> javax.xml.bind.JAXBElement incompatible with.....
>
> This only happens if I use a instance of EntityManager that is different
> then the instance used to persist the original record. For example, if I
> do the following:
>
> EntityManagerFactory emFactory = .......
> EntityManager em = emFactory............
> em.getTransaction().begin();............
> /*.
> Create the instance of the JAXB class and the entity.
> Populate both classes with data.
> Set the JAXB property of the entity class
> */
>
> em.persist(.....);
> em.getTransaction().commit();
>
> MyEntity entity = em.find(.......);
>
>
> The above code executes without error. I've checked the db record and it
> is correct. I have also validated the XML in the db against the schema
> used to generate the JAXB classes and there are no issues there either.
> If
> I run another program that tries to retrieve the same entity as above....
> i.e.
>
> EntityManagerFactory emFactory = .......
> EntityManager em = emFactory...........
>
> MyEntity entity = em.find(.......);....
>
>
> the exception noted above is thrown. I am currently using OpenJPA 1.2.1
> and JAXB 2.0.5. I have also tried this with JAXB 2.1.12 and I receive the
> same result. Am I doing something wrong? Could this be a bug in OpenJPA?
>
-----
Pinaki
--
View this message in context: http://n2.nabble.com/OpenJPA-and-JAXB-tp3440312p3448776.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.