Hi Don, I'm not familiar with jaxb, but what you have looks pretty close to the example in the OpenJPA manual.
I've tried to reproduce the non-jaxb path and found that the problem is that OpenJPA is expecting your XML column to be a VARCHAR (because that's how it's defined in the entity). I've found two ways to solve the problem : 1. Add a columnDefinition to your @Column annotation. For example : @Column(name = "XMLCOLUMN", columnDefinition ="XMLCOLUMN XMLType") private String xmlColumn; 2. Set the openjpa.jdbc.SchemaFactory property to "native" in persistence.xml. This will tell OpenJPA to read the column definitions for every entity in your persistence unit - so it'll take a little longer to create the EntityManagerFactory. You will also want the fixes for OPENJPA-128 <https://issues.apache.org/jira/browse/OPENJPA-1289>9 and OPENJPA-1874 <https://issues.apache.org/jira/browse/OPENJPA-1874>. These are available in our nightly snapshots which are picked up by WebSphere on a regular basis (but you might need the latest fixpack). Hope this helps, -mike On Fri, Mar 25, 2011 at 11:47 AM, kostellodon <donald.g.koste...@citi.com>wrote: > I am working with base WebSphere 7, which includes JPA 1.2.1, and am > interacting with an Oracle 11.2 database. I have a table with an XMLType > column in it that I am trying to persist and later retrieve from. I am > doing my testing using JUnit 4, using ojdbc6.11.1.0.7.0.jar for my driver. > My classes are being enhanced at loadtime using the javaagent. > > I have tried 2 different methods to store and retrieve the xmltype column. > My first class uses a simple String attribute, and looks like this > (BasicEntity just contains versioning and user info): > > @Entity > @Table(name="SERVICE_SNAPSHOTS") > public class ServiceSnapshot extends BasicEntity { > > private static final long serialVersionUID = 5789621189247103676L; > > @Id > @Column(name="SS_ID") > @SequenceGenerator(name="id_generatorServiceSnapshot", > sequenceName="SERVICE_SNAPSHOTS_SEQ", allocationSize=1) > @GeneratedValue(strategy=GenerationType.SEQUENCE, > generator="id_generatorServiceSnapshot") > private Long id; > > @Column(name="SS_SERVICE_CD") > private String serviceCode; > > @Column(name="SS_OPERATION_CD") > private String operationCode; > > @Column(name="SS_CONTENTS_XML") > private String contentsXML; > > > When I persist the objects, things appear to be stored in the database as > expected. If I store and fetch the objects in the same method (so that the > objects are in the entity manager), everything comes back fine. I can > query > the database via SQL and the results are returned. However, if I just > fetch > the objects, all of the attributes except the XML attribute are properly > fetched. The XML attribute is null. If I log the SQL that's being run, I > see the column in the SQL string, but the contentsXML is still null. > > My second uses a JAX-B enhanced object to replace the contentsXML > attribute, > and this attribute looks like this: > @Persistent(fetch=FetchType.EAGER) > @Strategy("org.apache.openjpa.jdbc.meta.strats.XMLValueHandler") > @Column(name="ss_contents_xml") > private DEServiceResults results; > > I get the same behavior with this class - the results attribute is null, > even though the other attributes are not, and results is in the SQL query > that gets logged. > > I can fetch the xml if I use a native query, so I don't think it's a driver > issue. Am I setting up my xmltype incorrectly, is this an OpenJPA problem, > or is this a bug with the IBM version? > > Thanks for any help. > > Don > > -- > View this message in context: > http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208344.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. >