[jboss-user] [EJB 3.0] - Re: get Object field in MS SQL
ccharpentier
do-not-reply at jboss.com
Mon Aug 21 13:37:55 EDT 2006
Hi,
I managed to crete my image field in MS SQL to get file larger than 8Ko
I create a Blob in my entity
| package com.edieyes.oma.entities;
|
| import java.io.InputStream;
| import java.sql.Blob;
| import java.sql.Date;
|
| import javax.persistence.Basic;
| import javax.persistence.Entity;
| import javax.persistence.FetchType;
| import javax.persistence.GeneratedValue;
| import javax.persistence.Id;
| import javax.persistence.Lob;
| import javax.persistence.Table;
|
| import org.hibernate.annotations.Type;
|
| @Entity
| @Table(name="FichierOma")
| public class FichierOma {
|
| Integer id;
| String numCommande;
| String numJob;
| String idClient;
| Date insertDate;
| Blob fichierOma;
| /**
| * @return Returns the fichierOma.
| */
| @Lob @Basic(fetch = FetchType.EAGER)
| public Blob getFichierOma() {
| return fichierOma;
| }
| /**
| * @param fichierOma The fichierOma to set.
| */
| public void setFichierOma(Blob fichierOma) {
| this.fichierOma = fichierOma;
| }
|
| /**
| * @return Returns the id.
| */
| @Id
| @GeneratedValue
| public Integer getId() {
| return id;
| }
| /**
| * @param id The id to set.
| */
| public void setId(Integer id) {
| this.id = id;
| }
| /**
| * @return Returns the idClient.
| */
| public String getIdClient() {
| return idClient;
| }
| /**
| * @param idClient The idClient to set.
| */
| public void setIdClient(String idClient) {
| this.idClient = idClient;
| }
| /**
| * @return Returns the insertDate.
| */
| public Date getInsertDate() {
| return insertDate;
| }
| /**
| * @param insertDate The insertDate to set.
| */
| public void setInsertDate(Date insertDate) {
| this.insertDate = insertDate;
| }
| /**
| * @return Returns the numCommande.
| */
| public String getNumCommande() {
| return numCommande;
| }
| /**
| * @param numCommande The numCommande to set.
| */
| public void setNumCommande(String numCommande) {
| this.numCommande = numCommande;
| }
| /**
| * @return Returns the numJob.
| */
| public String getNumJob() {
| return numJob;
| }
| /**
| * @param numJob The numJob to set.
| */
| public void setNumJob(String numJob) {
| this.numJob = numJob;
| }
|
| }
|
and I get in my SQL SERVER
id : int
idClient : varchar(255)
fichierOma : image
insertDate : datetime
numCommande : varchar(255)
numJob : varchar(255)
but now I ve got another problem
when I want to insert an entity I get this error message
| javax.ejb.EJBException: java.lang.IllegalStateException: Blobs may not be access
| ed after serialization
| at org.jboss.ejb3.tx.Ejb3TxPolicy.handleExceptionInOurTx(Ejb3TxPolicy.ja
| va:69)
| at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:83)
| at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java
| :197)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInt
| erceptor.java:76)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(Stateles
| sInstanceInterceptor.java:62)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.aspects.security.AuthenticationInterceptor.invoke(Authentic
| ationInterceptor.java:78)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterce
| ptor.java:47)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(Asynchrono
| usInterceptor.java:106)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessCo
| ntainer.java:227)
| at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.
| java:59)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteP
| roxy.java:102)
| at $Proxy169.addfile(Unknown Source)
| at com.edieyes.oma.servlet.Test2Servlet.createUsers(Test2Servlet.java:96
| )
| at com.edieyes.oma.servlet.Test2Servlet.doPost(Test2Servlet.java:68)
| at com.edieyes.oma.servlet.Test2Servlet.doGet(Test2Servlet.java:63)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
| icationFilterChain.java:252)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
| ilterChain.java:173)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
| lter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
| icationFilterChain.java:202)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
| ilterChain.java:173)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
| alve.java:213)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
| alve.java:178)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
| yAssociationValve.java:175)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
| e.java:74)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
| ava:126)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
| ava:105)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
| ve.java:107)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
| a:148)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
| :869)
| at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p
| rocessConnection(Http11BaseProtocol.java:664)
| at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
| int.java:527)
| at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWor
| kerThread.java:112)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: java.lang.IllegalStateException: Blobs may not be accessed after seri
| alization
| at org.hibernate.lob.SerializableBlob.getWrappedBlob(SerializableBlob.ja
| va:23)
| at org.hibernate.type.BlobType.set(BlobType.java:38)
| at org.hibernate.type.BlobType.nullSafeSet(BlobType.java:117)
| at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(Abst
| ractEntityPersister.java:1910)
| at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(Abst
| ractEntityPersister.java:1887)
| at org.hibernate.persister.entity.AbstractEntityPersister$1.bindValues(A
| bstractEntityPersister.java:2038)
| at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(Abstr
| actReturningDelegate.java:32)
| at org.hibernate.persister.entity.AbstractEntityPersister.insert(Abstrac
| tEntityPersister.java:2044)
| at org.hibernate.persister.entity.AbstractEntityPersister.insert(Abstrac
| tEntityPersister.java:2481)
| at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentit
| yInsertAction.java:47)
| at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
| at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplic
| ate(AbstractSaveEventListener.java:290)
| at org.hibernate.event.def.AbstractSaveEventListener.performSave(Abstrac
| tSaveEventListener.java:180)
| at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId
| (AbstractSaveEventListener.java:108)
| at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient
| (DefaultPersistEventListener.java:131)
| at org.hibernate.event.def.DefaultPersistEventListener.onPersist(Default
| PersistEventListener.java:87)
| at org.hibernate.event.def.DefaultPersistEventListener.onPersist(Default
| PersistEventListener.java:38)
| at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:620)
| at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:594)
| at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:598)
| at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityMan
| agerImpl.java:186)
| at org.jboss.ejb3.entity.TransactionScopedEntityManager.persist(Transact
| ionScopedEntityManager.java:175)
| at com.edieyes.oma.bean.OmaBean.addfile(OmaBean.java:27)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
| java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
| sorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:112)
| at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationCo
| ntextImpl.java:166)
| at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3Int
| erceptorsInterceptor.java:63)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invok
| e(TransactionScopedEntityManagerInterceptor.java:54)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsI
| nterceptor.java:47)
| at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.
| java:101)
| at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
|
|
here the code of my servlet
| import java.io.File;
| import java.io.FileInputStream;
| import java.io.IOException;
| import java.io.InputStream;
| import java.io.PrintWriter;
| import java.sql.Date;
| import java.sql.ResultSet;
| import java.util.Iterator;
|
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
| import javax.servlet.ServletConfig;
| import javax.servlet.ServletException;
| import javax.servlet.http.HttpServlet;
| import javax.servlet.http.HttpServletRequest;
| import javax.servlet.http.HttpServletResponse;
|
| import com.edieyes.oma.bean.Oma;
| import com.edieyes.oma.entities.FichierOma;
|
|
|
|
| public class Test2Servlet extends HttpServlet {
|
| /**
| *
| */
| private static final long serialVersionUID = 1L;
| private Oma usersService;
|
| public void init(ServletConfig config) throws ServletException {
| System.out.println("*******INIT*****");
| try {
| Context ctx = new InitialContext();
| ///usersService = (RemoteUsers) ctx.lookup(RemoteUsers.class.getName());
| usersService = (Oma) ctx.lookup("OmaBean/remote");
|
|
| } catch (NamingException e) {
| System.out.println("**EXCEPTION 1 *");
| // TODO Auto-generated catch block
| e.printStackTrace();
| }
| }
|
|
|
| protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
| doPost(req,resp);
| }
|
| protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
| createUsers(req,resp);
|
| }
| private void createUsers(HttpServletRequest req, HttpServletResponse resp)
| throws ServletException, IOException
| {
| resp.setContentType("text/html");
| PrintWriter htout = resp.getWriter();
| htout.println("<body><table>");
| htout.println("<tr><th>Id</th><th>Id Client</th><th>numero de commande</th><th>Job</th><th></th></tr>");
|
| System.out.println("***************");
| System.out.println("createUsers");
|
| File file = new File("D:\\Projets\\workspace\\test\\data.dat");
| int fileLength = (int) file.length();
| InputStream value = null;
| FileInputStream fileinp = null;
|
| System.out.println("Inserting data ...\n");
|
| try {
| fileinp = new FileInputStream(file);
| value = (InputStream) fileinp;
| } catch (Exception e) {
| System.out.println(e.getMessage());
|
| }
| usersService.addfile( "Edieyes9","df","moi",new Date(new java.util.Date().getTime()),org.hibernate.Hibernate.createBlob(value,fileLength));
|
|
|
| System.out.println(usersService.findall());
|
|
| }
|
|
| }
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3966500#3966500
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3966500
More information about the jboss-user
mailing list