[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