I don't have control over our production environment, so I can't ensure we'll 
have the fixpacks available, so I can't try your second solution.  But, your 
first method worked like a charm.  Adding the same columnDefinition to my jaxb 
example caused that to start working also.  The restriction seems to be that if 
I have multiple mappings for the same table, the first entity that I use to 
access the table has to have that columnDefinition (which is covered, 
obviously, by adding that definition to all of my entities accessing that 
table).  Thanks for the help.

Don

________________________________
From: Michael Dick [via OpenJPA] 
[mailto:ml-node+6208737-1681935879-321...@n2.nabble.com]
Sent: Friday, March 25, 2011 1:30 PM
To: Kostello, Donald G [GCG-NAOT]
Subject: Re: Oracle XMLType fetch problems

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 <[hidden 
email]</user/SendEmail.jtp?type=node&node=6208737&i=0&by-user=t>>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<http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208344.html?by-user=t>
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
>


________________________________
If you reply to this email, your message will be added to the discussion below:
http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208737.html
To unsubscribe from Oracle XMLType fetch problems, click 
here<http://openjpa.208410.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=6208344&code=ZG9uYWxkLmcua29zdGVsbG9AY2l0aS5jb218NjIwODM0NHwtMjEyMzQ1ODE0OA==>.


--
View this message in context: 
http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6209046.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to