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

Classe criteria

Pessoa estou com um problema na classe criteria do hibernate.

Tenho duas classes - classe categoria e classe filme:

possuo muitas categorias cadastradas oque eu não consigo é cadastrar um filme porque quando vou buscar o id da categoria(Filme tem uma chave estrangeira de categoria) ela vem como null;

meu método de salvar.

public void cadastraFilme() {

        CategoriaDAO categoriaDAO = new CategoriaDAO();

        Filme filme = new Filme();
        FilmeDAO filmeDAO = new FilmeDAO();

        String[] filmes = { "senhor dos anéis", "herry", "cezar" };

        Date[] datas = { new Date(2001 - 01 - 01), new Date(2006 - 02 - 05),
                new Date(2000 - 12 - 07) };

        for (int i = 0; i < 3; i++) {

            filme.setAno(datas[i]);
            filme.setDescricao(filmes[i]);
            filme.setCategoria(categoriaDAO.buscar(1));
            filmeDAO.salvar(filme);

        }

Ai no exemplo eu estou pegando a categoria de ID=1, isso é irrelevante posso pegar qualquer uma, o problema é que não consigo pegar nenhuma. Da uma olhada no select que faço para buscar o id de categoria.

public Categoria buscar(int codigo) {

        Categoria categoria = null;

        try {

            this.sessao = Conexao.openSessionFactory().getCurrentSession();

            this.transacao = this.sessao.beginTransaction();

            Criteria filtro = this.sessao.createCriteria(Categoria.class);

            filtro.add(Restrictions.eq("categoria",codigo));

            categoria = (Categoria) filtro.uniqueResult();

            this.transacao.commit();

        } catch (Throwable e) {

            if (this.transacao.isActive()) {

                this.transacao.rollback();

            }

        } finally {

            try {

                if (this.sessao.isOpen()) {

                    this.sessao.close();

                }

            } catch (Throwable e) {

                System.out.println("Erro" + e.getMessage());

            }

        }

        return categoria;

    }

Eu não sei oque está errado, se fosse com sql em faria normalmente, mas eu não conheço muito a classe criteria no hibernate, onde está o erro?

  • Coloque suas classes mapeadas para que a gente possa dar uma olhada, um conselho já que não está persistindo nada nesse método não tem necessidade de abrir uma transação ao meu ver é desnecessário.

    fabio rene Mussi   20 de fev de 2015
  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!

1 resposta

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