openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael Dick <michael.d.d...@gmail.com>
Subject Re: Oracle XMLType fetch problems
Date Fri, 25 Mar 2011 20:25:52 GMT
The columnDefinition is the way I'd recommend if you know you'll be using
Oracle. Other databases might have a different type names for XML columns so
you're losing a little portability with this approach.

At any rate, I'm glad it worked for you.

-mike


On Fri, Mar 25, 2011 at 3:14 PM, kostellodon <donald.g.kostello@citi.com>wrote:

> 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-321123@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.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message