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

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','abc@cdb.com','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", "zzz@ccc.com");
            query.setString("telefone", "zzz@ccc.com");
            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?

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

abrassss

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.

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','abc@cdb.com','2229-2222','79/1/10','2.5')";

            Query query = session.createSQLQuery(sql);

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

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!

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.