Hi! I really need help...
I'm using hibernate
2.1.2
I´m trying to insert o clob
field into Oracle... I did the example located at page http://www.hibernate.org/56.html. What is wrong??? How can I insert o clob into Oracle?
The error that I have received for sizes bigger then 4000 caracteres is: net.sf.hibernate.JDBCException: could not update:
[com.dhc.doc.hibernate.FileAttachment#42]
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:706) at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:641) at net.sf.hibernate.impl.ScheduledUpdate.execute(ScheduledUpdate.java:52) at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2382) at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2336) at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2204) at com.dhc.doc.logic.FileAttachmentLogic.addFileAttachment(FileAttachmentLogic.java:51) at com.dhc.doc.actions.FileUploadAction.execute(FileUploadAction.java:44) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) Caused by: java.sql.SQLException: operation not allowed: streams type cannot be used in batching at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210) at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:2781) at net.sf.hibernate.impl.BatchingBatcher.addToBatch(BatchingBatcher.java:30) at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:688) - My source code is: :: Teste.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > <hibernate-mapping> <!-- Created by Middlegen Hibernate plugin http://boss.bekk.no/boss/middlegen/ http://hibernate.sourceforge.net/ --> <class name="net.wasys.crea.model.Teste" table="TESTE" > <id name="id" type="long" column="ID" > <generator class="assigned" /> </id> <property name="texto" type="clob" column="TEXTO" not-null="true" /> </class> </hibernate-mapping> ------------------------------------------------ :: Teste.java import java.io.Serializable; import java.sql.Clob; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; /** @author Hibernate CodeGenerator */ public class Teste implements Serializable { /** identifier field */ private Long id; /** persistent field */ private Clob texto; . . . ------------------------------------------------ :: Teste4000.java (My test case) public class Teste4000 { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new FileReader("C://workspaces/crea/Crea/src/net/wasys/crea/test/a.txt")); String line = null; StringBuffer sb = new StringBuffer(); while ((line = reader.readLine()) != null) { sb.append(line); } System.out.println(sb.toString().length()); Teste teste = new Teste(); Configuration c = new Configuration(); c.configure(new File("hibernateTeste.cfg.xml")); Session session = c.buildSessionFactory().openSession(); Transaction tx; tx = session.beginTransaction(); teste.setId(new Long(11)); teste.setTexto(Hibernate.createClob(sb.toString())); session.save(teste); session.flush(); session.refresh(teste, LockMode.UPGRADE); oracle.sql.CLOB clob = (oracle.sql.CLOB) teste.getTexto(); java.io.Writer pw = clob.getCharacterOutputStream(); pw.write(1); pw.flush(); pw.close(); tx.commit(); session.close(); Thanks! |