Dúvida de como Listar no Hibernate

Boa tarde!

Primeiramente, peço desculpas, pois deve ter alguma resposta semelhante a minha dúvida aqui no fórum, mas diversos tópicos eu não consegui entender e fazer funcionar no meu caso. Acredito ser uma dúvida simples.

Estou fazendo um sistema para gerenciar ocorrências técnicas (Help Desk), estou utilizando JSF, Spring e Hibernate por enquanto.

A dúvida é a seguinte:

No meu formulário de usuários, eu tenho uma lista de departamentos que encontra-se em um tabela do banco de dados. Este <p:selectOneMenu /> vai mostrar a listagem apenas dos departamentos ativos e com o campo “tecnico” também marcado como “true” (Que será o departamento que atende as ocorrências técnicas).

Eu não consigo fazer com que a listagem exiba somente os departamentos ativos. Utilizando JDBC, simplesmente altera o query do Statement colocando uma clausula where com o campo ativo sendo o valor 1.

No Hibernate eu não sei como fazer.

Segue abaixo as classes que envolvem o Departamento:

Departamento

[code]@Entity
public class Departamento implements Serializable {

@Id
@GeneratedValue
private Integer codigo;
private String departamento;
private boolean tecnico;
private boolean disponibilidade;

/(Getters e Setters)/[/code]

DepartamentoDAO (Interface)

[code]public interface DepartamentoDAO {

public void salvar(Departamento departamento);
public void atualizar(Departamento departamento);
public void excluir(Departamento departamento);
public List<Departamento> listar();
}[/code]

DepartamentoDAOHibernate

[code]public class DepartamentoDAOHibernate implements DepartamentoDAO {

private Session session;

public void setSession(Session session) {
this.session = session;
}

public void salvar(Departamento departamento) {
this.session.save(departamento);
}

public void atualizar(Departamento departamento) {
this.session.update(departamento);
}

public void excluir(Departamento departamento) {
this.session.delete(departamento);
}

@SuppressWarnings(“unchecked”)
public List<Departamento> listar() {
return this.session.createCriteria(Departamento.class).list();
}

}[/code]

DepartamentoRN (Camada de Regra de Negócio)

[code]public class DepartamentoRN {

private DepartamentoDAO departamentoDAO;

public DepartamentoRN() {
this.departamentoDAO = DAOFactory.criarDepartamentoDAO();
}

public void salvar(Departamento departamento) {
Integer codigo = departamento.getCodigo();

if (codigo == null || codigo == 0) {
this.departamentoDAO.salvar(departamento);
} else {
this.departamentoDAO.atualizar(departamento);
}

}
public void excluir(Departamento departamento) {
this.departamentoDAO.excluir(departamento);
}

public List<Departamento> listar() {
return this.departamentoDAO.listar();
}

}[/code]

Trecho do Formulário

[code]<h:outputLabel>Selecione
<p:commandLink value=" ou cadastre um novo departamento"
action="#{departamentoBean.novo}" immediate=“true” />
</h:outputLabel>

<h:outputLabel value=“Departamento” for=“departamento” />
<p:selectOneMenu value="#{departamentoBean.departamento.codigo}" id=“departamento”>
<f:selectItems value="#{departamentoBean.lista}" var=“departamento"
itemLabel=”#{departamento.departamento
}“
itemValue=”#{departamento.codigo}" />
</p:selectOneMenu> [/code]

Engraçado que nem citou “li a documentação da API Criteria e não entendi”…
Pois é, sem estudar ninguém aprende nada, cara.
A API do Criteria possui um elemento chamado Restrictions. Com ele você pode criar condições para que a pesquisa considere determinadas cláusulas (como o =, NULL, NOT NULL, etc).
Mas, não vou dar de bandeja isso não. Pesquise no google por “Restrictions Criteria Hibernate java” (pois pode encontrar resultados para o NHibernate do .NET)

Grato pela sua educação!

Entendi, educação, no teu ponto de vista, é fazer o trabalho que você não fez por que não teve vontade?

Boa tarde!

Como o Sr. drsmachado mencionou sobre criteria, da uma olhada na documentação que vc vai encontrar tudo que precisa para fazer suas consultas via hibernate, segue o link caso o Sr. ainda não tenha encontrado.

http://docs.jboss.org/hibernate/orm/3.3/reference/pt-BR/html/querycriteria.html

Att.

drsmachado, eu não sei o que eu fiz para você. Não faz sentido a forma de como está falando comigo.

O tópico perdeu o objetivo, já pode ser finalizado.

Obrigado pelo link ManoJava, mas eu já tinha visto antes de postar no fórum. Eu sou extremamente novo na plataforma java e estou tentando ajudar a empresa a qual trabalho com sistema básico para auxiliar no atendimento de chamados. Eu não consegui entender como funciona pela documentação. Imaginei que eu pudesse conseguir um auxílio no entendimento no fórum, mas infelizmente não fui muito feliz nisso. Mas tudo bem, vou usar JDBC que eu estou vendo na faculdade.

Abraços

danilosfc só pra tentar te esclarecer um pouco mais, da uma procurada sobre QueryObject<?>, é muito tranquilo isso, vc cria esse objeto passando uma entidade para ele, aplica as restrictions sobre esse objeto e depois manda o resultado da consulta para uma List<?> ou para outro objeto e utiliza ele para exibir o resultado.

Att.

[quote=danilosfc]drsmachado, eu não sei o que eu fiz para você. Não faz sentido a forma de como está falando comigo.

O tópico perdeu o objetivo, já pode ser finalizado.[/quote]
Esse povo anda muito sensível, só pode.
Eu disse que você não se deu ao trabalho de procurar e, é verdade, caso contrário, talvez nem abriria este tópico.
“Ah, drsmachado, poderia falar com mais jeito”.
Não, não poderia. As pessoas confundem objetividade e sinceridade com grosseria.

drsmachado larga a mão de ser trouxa, todo mundo tem dificuldade, se você não tem sorte sua!!! você é tão bom que precisa estar nesse forum pra responder suas duvidas…

danilosfc

Conforme ManoJava mencionou por gentileza verificar este link e postar aonde está o seu não entendimento

http://docs.jboss.org/hibernate/orm/3.3/reference/pt-BR/html/querycriteria.html

ManoJava eu dei uma olhada no QueryObject. Quando eu chegar em casa, vou fazer os testes. Obrigado!

luizgoc1707, no post acima eu falei que eu n tinha conseguido entender a documentação, eu estava em busca de auxilio ou um exemplo com campos true false de ativo e inativo. Vou tentar usar o QueryObjetct, caso eu encontre problemas, vou usar JDBC que é mais fácil, mesmo sendo mais trabalhoso.

Cara tu ainda precisa de ajuda? Posso tentar te ajudar.
vlww