Sql Insert Into com hibernate não insere na tabela! Ajuda!

5 respostas
R

Olá Pessoal.

Estou com um problema na hora de inserir dados em uma tabela com o seguinte código

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            session = sessionFactory.openSession();
            String sql = "INSERT INTO clientes ";
                    sql += " (codigo, nome, email, telefone, data_de_nascimento, pontos) VALUES";
                    sql += " ('1','abilio','[email removido]','2229-2222','79/1/10','2.5')";

            Query query = session.createSQLQuery(sql);

            query.executeUpdate();

            session.close();

O problema é que ele não insere de jeito nenhum os valores na tabela. Se eu pego o mesmo código e mudo o código SQL pra criar uma tabela ele funciona direitinho, mas para inserir os dados não está funcionando, e também, não dá erro, simplesmente não insere.

Já tentei também utilizando:

String sql = "INSERT INTO clientes ";
                    sql += " (codigo, nome, email, telefone, data_de_nascimento, pontos) VALUES";
                    sql += " (:codigo, :nome, :email, :telefone, :data_de_nascimento, :pontos)";

            SQLQuery query = session.createSQLQuery(sql);

            query.setString("codigo", "1");
            query.setString("nome", "abc");
            query.setString("email", "[email removido]");
            query.setString("telefone", "[email removido]");
            query.setString("data_de_nascimento", "79-10-10");
            query.setString("pontos", "5.6");

Ou até mudando o query.setString para query.setParameter tb não insere na tabela.

Alguém pode me ajudar?

5 Respostas

R

se vc ta usando hibernate nao é necessario montar uma query para inserir um obj, da uma olhadinha nos tutoriais baiscos de hibernate

abrassss

R

Olá renanreismartins

Eu sei disso, mas o sistema que estou fazendo precisa ser feito via query sql. Só estou utilizando o hibernate para facilitar o gerenciamento de sessão.

A
Tenta assim, com

Transaction tx = session.beginTransaction();

tx.commit();
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
            session = sessionFactory.openSession();
            Transaction tx = session.beginTransaction();
            String sql = "INSERT INTO clientes ";
                    sql += " (codigo, nome, email, telefone, data_de_nascimento, pontos) VALUES";
                    sql += " ('1','abilio','[email removido]','2229-2222','79/1/10','2.5')";

            Query query = session.createSQLQuery(sql);

            query.executeUpdate();
            tx.commit();
            session.close();
R

alsoqz funcionou! Valeu mesmo! :smiley:

Agora não entendi pq uma query para criar uma tabela no banco funciona sem o Transaction e uma query para inserir os valores na tabela precisa do Transaction?

De qualquer forma, abrigado!

P

Após uma instrução DDL (CREATE, ALTER, DROP, …) é sempre efectuado um commit automático.

Após uma instrução DML (SELECT, INSERT, UPDATE, DELETE,…) isso já depende se o auto commit está a true ou false, podendo ser necessário um commit explícito.

Criado 15 de abril de 2010
Ultima resposta 16 de abr. de 2010
Respostas 5
Participantes 4