1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

JPA - Query delete

Quero criar uma query para remover todos os registros que contem determinado código associado.

Aqui esta meu método onde tento deletar os registros:

@Override
public void removerHistoricoDoProduto(String codigoProduto) {
    try {
        Query query = em.createQuery("delete from Historico hist where hist.produtoHistorico.codigoProduto = :codigoProduto");
        query.setParameter("codigoProduto", codigoProduto);
        query.executeUpdate();
    } catch(NoResultException e) {
        e.printStackTrace();
    }
}

Estou tentando deletar os registros da entidade Historico que contem o produto com o código do parâmetro.

Eu só deleto o Historico e não o Produto, por isso não estou usando Cascade.

Ta aparecendo muitas linhas de exception no meu console e resumindo elas, elas me dizem java.sql.SQLSyntaxErrorException: ORA-00933: comando SQL não encerrado adequadamente

Desde já, obrigado.

Meu persistence.xml

<persistence-unit name="CLIENTE_ORACLE" transaction-type="JTA">    
    <provider>org.hibernate.ejb.HibernatePersistence</provider>        
    <jta-data-source>java:jboss/datasources/OracleDS</jta-data-source>
    <properties>
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="update" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
    </properties>    
</persistence-unit>
  • O seu persistence.xml está configurado com o dialeto correto do banco de dados utilizado? Se estiver utilizando o Hibernate use no persistence.xml a propriedade <property name="hibernate.show_sql" value="true"/> e <property name="hibernate.format_sql" value="true"/> para verificar no console o SQL gerado.

    PuRgAuM   03 de jan de 2014
  • Meu persistence.xml esta ok. Estou usando JPA com a libs persistence, mesma coisa que hibernate porém é genérico e na minha opinião mais facil de trabalhar do que o hibernate msm.

    Giovane   04 de jan de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java java-ee jpa ejb jboss banco-de-dados oracle ou faça a sua própria pergunta.