Consulta Tabela Relacionada + Boolean Hibernate

Pessoal, estou precisando realizar uma consulta e estou com uma duvida quanto a consulta de objetos relacionados.

Tenho a classe:

[code]@Entity
public class Tratamento {

@Id @GeneratedValue
private int id;

Calendar dataEntrada;

@ManyToOne
Paciente paciente;

private double valor;
private boolean status;[/code]

E preciso retornar todos que tenham o paciente X.

Pensei que fosse:

public List<Tratamento> buscaTratamentos(Paciente paciente) { return (List<Tratamento>) this.session.createCriteria(Tratamento.class) .add(Restrictions.eq("paciente.id", paciente.getId())).list(); }

Infelizmente não rolou…
Alguem sabe o que pode estar errado ?

Mais uma coisa, a propriedade status, fica como bit na base. Devo mandar 0 ou 1 ? 0=false e 1=true ?

Valeu!

Olá Fmgasparino!

Estou com o mesmo problema, quero pesquisar pelo nome.

Só um detalhe que vi na sua entity tratamento é que vc não especificou por o campo chave
que liga as duas, vc deveria corrigir para isto:

[code]@Entity
public class Tratamento {

@Id @GeneratedValue  
private int id;  
  
Calendar dataEntrada;  
  
@ManyToOne  
@JoinColumn( name="nomeDoCampoChaveNoBancoDeDadosParaoJoinDasTabelas" )   //sera o campo da foreign key, espero que entenda, geralmente id_paciente ou pacienteId
Paciente paciente;  
  
private double valor;  
private boolean status;

[/code]

desta forma, se vc pesquisasse da forma abaixo ele utilizaria como criterio de pesquisa o Id, mas temos o mesmo problema que queremos a pesquisa pelo nome

public List&lt;Tratamento&gt; buscaTratamentos(Paciente paciente) { return (List&lt;Tratamento&gt;) this.session.createCriteria(Tratamento.class) .add(Restrictions.eq("paciente", paciente)).list(); //ele automaticamente procuraria o id do seu paciente com o id do paciente do tratamento }

cara se tiver a reposta me mande, por favor!
kweles@gmail.com

[quote=kweles]Olá Fmgasparino!

Estou com o mesmo problema, quero pesquisar pelo nome.

Só um detalhe que vi na sua entity tratamento é que vc não especificou por o campo chave
que liga as duas, vc deveria corrigir para isto:

[code]@Entity
public class Tratamento {

@Id @GeneratedValue  
private int id;  
  
Calendar dataEntrada;  
  
@ManyToOne  
@JoinColumn( name="nomeDoCampoChaveNoBancoDeDadosParaoJoinDasTabelas" )   //sera o campo da foreign key, espero que entenda, geralmente id_paciente ou pacienteId
Paciente paciente;  
  
private double valor;  
private boolean status;

[/code]

desta forma, se vc pesquisasse da forma abaixo ele utilizaria como criterio de pesquisa o Id, mas temos o mesmo problema que queremos a pesquisa pelo nome

public List&lt;Tratamento&gt; buscaTratamentos(Paciente paciente) { return (List&lt;Tratamento&gt;) this.session.createCriteria(Tratamento.class) .add(Restrictions.eq("paciente", paciente)).list(); //ele automaticamente procuraria o id do seu paciente com o id do paciente do tratamento }

cara se tiver a reposta me mande, por favor!
kweles@gmail.com

[/quote]

kweles, quando não especifico qual nome quero para o campo especifico, ele cria automatico a chave da Entidade relacionada. No meu caso criou paciente_id.
E o meu código acima funcionou, estava com problema na sessão na verdade.

Poderia postar seu código para analisarmos juntos?

Só não descobri como usar o boolean. True e false nao funciona.

Abs

Olá Meu amigo!

Eu consegui resolver meu problema! Seguindo sua idéia o que eu queria era pesquisar todos os pacientes
do tratamento pelo nome então consegui encontrar a resposta, seria mais ou menos assim:

public List&lt;Tratamento&gt; buscaTratamentos(Paciente paciente) { return (List&lt;Tratamento&gt;) this.session.createCriteria(Tratamento.class) .createCriteria("paciente") .add(Restrictions.like("name", paciente.getName() + "%" )).list(); //ele automaticamente procuraria o id do seu paciente com o id do paciente do tratamento }

No caso eu preciso fazer um novo criteria dentro do principal que é o tratamente, é como se eu estivesse navegando entre as entidades da composição!

Obrigado pela ajuda!