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<Tratamento> buscaTratamentos(Paciente paciente) {
return (List<Tratamento>) 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
}
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<Tratamento> buscaTratamentos(Paciente paciente) {
return (List<Tratamento>) 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
}
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.
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<Tratamento> buscaTratamentos(Paciente paciente) {
return (List<Tratamento>) 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!