No MySQL, tenho duas tabelas tableA
e tableB
. Estou tentando executar duas consultas:
executeQuery(query1)
executeQuery(query2)
Mas recebo o seguinte erro:
can not issue data manipulation statements with executeQuery().
O que isto significa?
Respostas:
Para manipular dados, você realmente precisa
executeUpdate()
ao invés deexecuteQuery()
.Aqui está um extrato do
executeUpdate()
javadoc que já é uma resposta por si só:fonte
Ao executar a instrução DML, você deve usar
executeUpdate
/ emexecute
vez deexecuteQuery
.Aqui está uma breve comparação:
fonte
Se você estiver usando uma bota de mola, basta adicionar uma anotação @Modifying.
fonte
@Modifying(clearAutomatically = true) @Transactional
Resolvi meu problema usando: logo acima da anotação @Query que define minha consulta de exclusãoUse
executeUpdate()
para emitir instruções de manipulação de dados.executeQuery()
destina-se apenas a consultas SELECT (ou seja, consultas que retornam um conjunto de resultados).fonte
Para Excluir consulta - Use
@Modifying
e@Transactional
antes@Query
: -Não vai dar o
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
erro.fonte
É para isso que
executeUpdate
serve.Aqui está um breve resumo da diferença: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
fonte
Este código funciona para mim: eu defino valores com um INSERT e obtenho o LAST_INSERT_ID () deste valor com um SELECT; Eu uso java NetBeans 8.1, MySql e java.JDBC.driver
fonte
executeQuery()
retorna aResultSet
. Não estou tão familiarizado com Java / MySQL, mas para criar índices você provavelmente deseja umexecuteUpdate()
.fonte
ResultSet
. Em vez disso, retorna umResultSet
.Não se esqueça de adicionar @Modifying e @Transnational antes de @query. funciona para mim.
Para excluir o registro com alguma condição usando consulta nativa com JPA, as anotações mencionadas acima são importantes.
fonte
Além de executeUpdate () nos parênteses, você também deve adicionar uma variável para usar uma instrução SQL.
Por exemplo:
fonte