JPA Salvando icone jpg no Banco

Olá Pessoal,

Estou com um problemão que à semana semana tentando não resolvo … bom vamos lá …

Conforme a especificação JPA, para salvar devo utilizar um atributo byte[] e anotá-lo com @Lob

model:

...
	@Lob
	@Column(name="IMAGE_")
	@Basic(fetch=FetchType.EAGER)
	private byte[] image;

//getter and setter

Daí eu permito ao usuario escolher o item que desejar e o sistema faz o upload do arquivo em um local temp. Faço isso utilizando a tag do ICEFaces ice:inputFile.
Quando o upload é concluido ele me retorna um java.io.File.

Para poder persistir devo converter este File para byte[]

faço isso da seguinte maneira:

[code]
ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
byte buffer[] = new byte[4096];
int bytesRead = 0;
FileInputStream fi = new FileInputStream(this.file.getAbsolutePath());
while ((bytesRead = fi.read(buffer))!=-1){
arrayOutputStream.write(buffer,0,bytesRead);
}

			arrayOutputStream.close();
			fi.close();[/code]

Seto o atributo:

newCiType.setImage(arrayOutputStream.toByteArray());

E chamo o cara que persist:

ICTypeFacadeImpl.create(newCiType);

metodo create:

[code]
public static void create(ConfigurationItemType icType) {

	EntityManager em = JPAUtility.getEntityManager();
	EntityTransaction transaction = em.getTransaction();
	transaction.begin();
	
	em.persist(icType);
	transaction.commit();
	
	em.close();
	
}[/code]

Ao termino de tudo isso: Ocorre um erro intermitente (ora sim ora nao):

Caused by: java.sql.SQLException: operação não permitida: streams type cannot be used in batching
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
	at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:3999)
	at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.addBatch(WrappedPreparedStatement.java:264)
	at org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:31)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247)
	... 75 more

Não sei o que é pq ora funfa ora nao funfa … urghhhhhh

Valeu galera

Tenho o mesmo problema.
Algum progresso com o seu caso?

[]s

amigão teu problema é dos menores. dos menores porque pelo que vi a tua imagem é pequena e podes jogar tudo em um array e tacar o foda-se pra o banco de dados e memoria.
E eu que preciso persistir N imagens!? acho que jpa não faz persistencia de streams do tipo URL, como se voce quiser baixar de um lugar e jogar para o outro. O jeito acho que é jogar mesmo pra um jdbc puro nesses momentos de salvar binarios.

O certo era ter algo que pega-se de um inputstream e joga-se para um outputstream que fosse para o banco de dados.
Se isso existe infelizmente está escondido a sete chaves! Em jpa não há 1 exemplo factível dessa merda. :x