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.
