Hi Don,

The AbsrtactMethodError probably comes from the fact that the setClob you use 
is a JDBC 4 variant of the method. If the driver is actually a JDBC 4 driver, 
you have chances to invoke the method like this:

((org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement) 
stmnt).getInnermostDelegate().setClob(...)

I am afraid there is no simple way to inject "XMLType(?)" into INSERTs in 
OpenJPA 1.2. You might try to extend the 
org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager or some of its 
neighbours and set it thru a property:

<property name="openjpa.jdbc.UpdateManager" 
value="org.apache.openjpa.jdbc.kernel.YourUpdateManager" />


You have probably seen the changes made to OpenJPA 2.1 in the source code, if 
not see [1], Subversion Commits tab.

Cheers,
Milosz

[1] https://issues.apache.org/jira/browse/OPENJPA-1691


> I've run into issues with handling strings whose length > 4000 chars.  I know 
> this is a documented bug that is fixed in OpenJPA 2.1, but I'm limited to the 
> OpenJPA 1.2.1, and am trying to fit the solution into that version.
> 
> I extended the base OracleDictionary, modified my persistence.xml to use my 
> dictionary, and overrode the connectedConfiguration() method.  This fixed the 
> fetch problems.
> 
> However, I can't figure out how to get the insert to work.  I overrode the 
> setTyped() method and put "stmnt.setClob" in there for my xml columns.  
> However, I'm getting an abstract method exception when this gets invoked.  
> Additionally, I can't figure out how to get the changes made in RowImpl to 
> get the generated sql correctly created (i.e. to insert XMLType(?) into the 
> string).  Do you have any insight into how or if I can work around this issue?
> 
> Thanks for any help.
> 
> Don
> 
> ________________________________
> From: Michael Dick [via OpenJPA] 
> [mailto:[email protected]]
> Sent: Friday, March 25, 2011 3:27 PM
> To: Kostello, Donald G [GCG-NAOT]
> Subject: Re: Oracle XMLType fetch problems
> 
> 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 <[hidden 
> email]</user/SendEmail.jtp?type=node&node=6209080&i=0&by-user=t>>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:
> > [hidden email]</user/SendEmail.jtp?type=node&node=6209080&i=1&by-user=t>]
> > 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>
> > <
> > http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208344.html?by-user=t<http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208344.html?by-user=t&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<http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6208737.html?by-user=t>
> > 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==<http://openjpa.208410.n2.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=6208344&code=ZG9uYWxkLmcua29zdGVsbG9AY2l0aS5jb218NjIwODM0NHwtMjEyMzQ1ODE0OA==&by-user=t>
> > >.
> >
> >
> > --
> > View this message in context:
> > http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6209046.html<http://openjpa.208410.n2.nabble.com/Oracle-XMLType-fetch-problems-tp6208344p6209046.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-tp6208344p6209080.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-tp6208344p6251372.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to