[JPA] Como fazer um insert de binario usando create native query

Estou tendo problemas para fazer um create native query com um parametro binário.
o código é o seguinte:

Query query = dao.createNativeQuery("INSERT INTO IMAGEM_PADRAO(ID_IMAGEM_PADRAO, NOME_IMAGEM, IMAGEM) values ('5', 'Odontograma2', ?)");
query.setParameter(1, arquivo);
query.executeUpdate();

Sendo a variavel arquivo um byte[]

o erro retornado é:

Hibernate: INSERT INTO IMAGEM_PADRAO(ID_IMAGEM_PADRAO, NOME_IMAGEM, IMAGEM) values ('5', 'Odontograma2', ?);
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:58)
	at br.com.sysweb.persistencia.ExecutaQueryNativa.executaLinha(ExecutaQueryNativa.java:83)
	at br.com.sysweb.persistencia.ExecutaQueryNativa.executaLinhaComArquivo(ExecutaQueryNativa.java:67)
	at br.com.sysweb.persistencia.ExecutaQueryNativa.executaQuery(ExecutaQueryNativa.java:38)
	at br.com.sysweb.persistencia.ControllerExecutaQueryNativa.main(ControllerExecutaQueryNativa.java:8)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:174)
	at org.hibernate.impl.SessionImpl.executeNativeUpdate(SessionImpl.java:1163)
	at org.hibernate.impl.SQLQueryImpl.executeUpdate(SQLQueryImpl.java:334)
	at org.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:49)
	... 4 more
Caused by: java.sql.SQLException: ORA-00911: caractere inválido

	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
	at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:745)
	at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:219)
	at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:970)
	at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1190)
	at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3370)
	at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3454)
	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
	at org.hibernate.engine.query.NativeSQLQueryPlan.performExecuteUpdate(NativeSQLQueryPlan.java:165)
	... 7 more

Alguem sabe como eu faço um insert que contenha um arquivo binario usando native query?

Olá,

Eu estava pesquisando algo parecido, o seu problema não são os parametros não ???

O código abaixo funcionou para aqui… tenta usar deste modo…


        String sQuery = "INSERT INTO tabela";
        sQuery +="(param_1,param_2,param_3,param_4) ";
        sQuery +="VALUES (:param_2, :param_2, :param_3, :param_4)";
        SQLQuery query = session.createSQLQuery(sQuery);

        query.setLong("param_1", new Long("1"));
        query.setString("param_2", "123");
        query.setString("param_3", "123");
        query.setString("param_4", "132");
        query.executeUpdate();

Desculpem, postei achando que fosse uma resposta ao meu post. Como deleta a citação?