Galera tenho aplicação em FLEX + JAVA + Hibernate.
Nessa aplicação preciso buscar dados em 4 tabelas, para exibi-las no dataGrid.
Por exemplo, em uma tabela paciente, preciso da cor, do sexo, e da idade.
este paciente passa depois por uma triagem que é chamada de Anamnese, e ai preciso pegar alguns dados dessa anamnese.
depois essa anamnese passa para um exame, que termina em um laudo.
ou seja, preciso dos dados daquele determinado paciente, o que deu na sua anamnese, exame, e laudo.
irei postar os codigos, do que comecei a montar, mas mesmo assim não está dando certo.
busca.mxml
// Aqui estou passando os dados que eu quero que sejam buscados.
public function buscarLaudos():void
{
var cor:String;
var sexo:String;
var dataDeNascimento: String;
var pesoAtual:String;
var hormonio:String;
var historicoCancer: String;
var gravida: String;
var lactacao: String;
var noduloLocalizacao: String;
var noduloTamanho: String;
var noduloContorno: String;
var noduloLimite: String;
var microcalcificacaoLocalizacao: String;
var microcalcificacaoForma: String;
var microcalcificacaoDistribuicao: String;
var tipoDaMama: String;
var noduloComCacificacao: String;
var calcificacaoVascular: String;
var calcificacaoDeAspectoBenigno:String;
var peleDaMama:String;
noduloLocalizacao = cblocnodulo.text;
noduloTamanho = cbtamnodulo.text;
noduloContorno = cbcontnodulo.text;
noduloLimite = cblimnodulo.text;
microcalcificacaoDistribuicao = cbdismicro.text;
microcalcificacaoForma = cbformmicro.text;
microcalcificacaoLocalizacao = cblocmicro.text;
tipoDaMama = cbtipomama.text;
cor = cbcor.text;
dataDeNascimento = txtidade.text;
if (hormosim.selected == true)
{
hormonio = "Sim";
}
else
{
hormonio = "Não";
}
if (rbmasc.selected == true)
{
sexo = "Masculino";
}
else
{
sexo = "Feminino";
}
if (histcancersim.selected == true)
{
historicoCancer = "Sim";
}
else
{
historicoCancer = "Não";
}
if (gravidasim == true)
{
gravida = "Sim";
}
else
{
gravida = "Não";
}
if (lactacaosim == true)
{
lactacao = "Sim";
}
else
{
lactacao = "Não";
}
if (rbnodcalsim == true)
{
noduloComCacificacao = "Sim";
}
else
{
noduloComCacificacao = "Não"
}
if (rbvascularsim == true)
{
calcificacaoVascular = "Sim";
}
else
{
calcificacaoVascular = "Não";
}
if (rbcalbenignosim == true)
{
calcificacaoDeAspectoBenigno = "Sim";
}
else
{
calcificacaoDeAspectoBenigno = "Não";
}
if (rbnormal == true)
{
peleDaMama = "Normal";
}
else if (rbespessada == true)
{
peleDaMama = "Espessada";
}
else
{
peleDaMama = "Retraida";
}
Controlador.buscarLaudos(cor,dataDeNascimento, pesoAtual, hormonio, sexo, historicoCancer, gravida,
lactacao, noduloLocalizacao, noduloTamanho, noduloContorno, noduloLimite,
microcalcificacaoLocalizacao, microcalcificacaoForma, microcalcificacaoDistribuicao, tipoDaMama,
noduloComCacificacao, calcificacaoVascular, calcificacaoDeAspectoBenigno, peleDaMama);
}
Controlador
// Esta é a parte do controlador, que pega os dados enviados pela tela e se comunica com o LaudoDAO, que fará a pesquisa no BD.
public List<Laudo> buscarLaudos(String cor, String pesoAtual,
String hormonio, String sexo, String historicoCancer,
String gravida, String lactacao, String noduloLocalizacao,
String noduloTamanho, String noduloContorno, String noduloLimite,
String microcalcificacaoLocalizacao, String microcalcificacaoForma,
String microcalcificacaoDistribuicao, String tipoDaMama,
String noduloComCacificacao, String calcificacaoVascular,
String calcificacaoDeAspectoBenigno, String peleDaMama, String dataDeNascimento) {
List saida = new ArrayList();
try {
List<Laudo> resultado = laudoDAO.buscarLaudos(cor, pesoAtual,
hormonio, sexo, historicoCancer, gravida, lactacao,
noduloLocalizacao, noduloTamanho, noduloContorno,
noduloLimite, microcalcificacaoLocalizacao,
microcalcificacaoForma, microcalcificacaoDistribuicao,
tipoDaMama, noduloComCacificacao, calcificacaoVascular,
calcificacaoDeAspectoBenigno, peleDaMama, dataDeNascimento);
for (int i = 0; i < resultado.size(); i++) {
visaoBuscaLaudo VBusca = new visaoBuscaLaudo();
System.out.println("Entro no laço");
VBusca.setCor(resultado.get(i).getExame().getAnamnese().getRequisicao().getPaciente().getCor());
VBusca.setHormonio(resultado.get(i).getExame().getAnamnese().getHormonio());
VBusca.setPesoAtual(String.valueOf(resultado.get(i).getExame().getAnamnese().getPesoAtual()));
VBusca.setCaicificacaoDeAspectoBenigno(resultado.get(i).getCalcificacaoDeAspectoBenigno());
VBusca.setCalcificacaoVascular(resultado.get(i).getCalcificacaoVascular());
VBusca.setDataDeNascimento(resultado.get(i).getExame().getAnamnese().getRequisicao().getPaciente().getDataDeNasciment());
VBusca.setGravida(resultado.get(i).getExame().getAnamnese().getGravida());
VBusca.setHistoricoCancer(resultado.get(i).getExame().getAnamnese().getHistoricoCancer());
VBusca.setHormonio(resultado.get(i).getExame().getAnamnese().getHormonio());
VBusca.setLactacao(resultado.get(i).getExame().getAnamnese().getLactacao());
VBusca.setMicrocalcificacaoDistribuicao(resultado.get(i).getMicrocalcificacaoDistribuicao());
VBusca.setMicrocalcificacaoForma(resultado.get(i).getMicrocalcificacaoForma());
VBusca.setMicrocalcificacaoLocalizacao(resultado.get(i).getMicrocalcificacaoLocalizacao());
VBusca.setNoduloComCacificacao(resultado.get(i).getNoduloComCacificacao());
VBusca.setNoduloContorno(resultado.get(i).getNoduloContorno());
VBusca.setNoduloLimite(resultado.get(i).getNoduloLimite());
VBusca.setNoduloLocalizacao(resultado.get(i).getNoduloLocalizacao());
VBusca.setNoduloTamanho(resultado.get(i).getNoduloTamanho());
VBusca.setPeleDaMama(resultado.get(i).getPeleDaMama());
VBusca.setDataDeNascimento(resultado.get(i).getExame().getAnamnese().getRequisicao().getPaciente().getDataDeNascimento());
saida.add(VBusca);
}
} catch (Exception e) {
e.printStackTrace();
}
return saida;
}
}
LaudoDAO
//esta é a parte que comunicará com o banco, buscando os dados e fazendo as condições.
public List<Laudo> buscarLaudos(String cor, String pesoAtual,
String hormonio, String sexo, String historicoCancer,
String gravida, String lactacao, String noduloLocalizacao,
String noduloTamanho, String noduloContorno, String noduloLimite,
String microcalcificacaoLocalizacao, String microcalcificacaoForma,
String microcalcificacaoDistribuicao, String tipoDaMama,
String noduloComCacificacao, String calcificacaoVascular,
String calcificacaoDeAspectoBenigno, String peleDaMama, String dataDeNascimento) {
Transaction transacao = sessao.beginTransaction();
Criteria consulta = sessao.createCriteria(Laudo.class);
consulta = consulta.createAlias("exame", "e");
consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.createAlias("a.requisicao", "r");
consulta = consulta.createAlias("r.paciente", "p");
if (cor != null && !cor.equals("Selecione")) {
// consulta = consulta.createAlias("exame", "e");
// consulta = consulta.createAlias("e.anamnese", "a");
// consulta = consulta.createAlias("a.requisicao", "r");
// consulta = consulta.createAlias("r.paciente", "p");
consulta = consulta.add(Restrictions.eq("p.cor", cor));
// consulta =
// consulta.add(Restrictions.eq("exame.anamnese.requisicao.paciente.cor",
// cor));
}
if (pesoAtual != null && pesoAtual.isEmpty()) {
// consulta = consulta.createAlias("exame", "e");
// consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.add(Restrictions.eq("a.pesoAtual", pesoAtual));
}
if (hormonio != null && !hormonio.equals("Não")) {
//consulta = consulta.createAlias("exame", "e");
//consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.add(Restrictions.eq("a.hormonio", hormonio));
}
if (sexo != null && !sexo.equals("Não")) {
//consulta = consulta.createAlias("exame", "e");
//consulta = consulta.createAlias("e.anamnese", "a");
//consulta = consulta.createAlias("a.requisicao", "r");
//consulta = consulta.createAlias("r.paciente", "p");
consulta = consulta.add(Restrictions.eq("p.sexo", sexo));
}
if (historicoCancer != null && !historicoCancer.equals("Não")) {
//consulta = consulta.createAlias("exame", "e");
//consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.add(Restrictions.eq("a.historicoCancer",
historicoCancer));
}
if (gravida != null && !gravida.equals("Não")) {
//consulta = consulta.createAlias("exame", "e");
//consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.add(Restrictions.eq("a.gravida", gravida));
}
if (lactacao != null && !lactacao.equals("Não")) {
//consulta = consulta.createAlias("exame", "e");
//consulta = consulta.createAlias("e.anamnese", "a");
consulta = consulta.add(Restrictions.eq("a.lactacao", lactacao));
}
if(dataDeNascimento != null && !dataDeNascimento.isEmpty()){
consulta = consulta.add(Restrictions.eq("p.dataDeNascimento", dataDeNascimento));
}
if (noduloLocalizacao != null && !noduloLocalizacao.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("noduloLocalizacao",
noduloLocalizacao));
}
if (noduloTamanho != null && !noduloTamanho.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("noduloTamanho",
noduloTamanho));
}
if (noduloContorno != null && !noduloContorno.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("noduloContorno",
noduloContorno));
}
if (noduloLimite != null && !noduloLimite.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("noduloLimite",
noduloLimite));
}
if (microcalcificacaoLocalizacao != null
&& !microcalcificacaoLocalizacao.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq(
"microcalcificacaoLocalizacao",
microcalcificacaoLocalizacao));
}
if (microcalcificacaoForma != null
&& !microcalcificacaoForma.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("microcalcificacaoForma",
microcalcificacaoForma));
}
if (microcalcificacaoDistribuicao != null
&& !microcalcificacaoDistribuicao.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq(
"microcalcificacaoDistribuicao",
microcalcificacaoDistribuicao));
}
if (tipoDaMama != null && !tipoDaMama.equals("Selecione")) {
consulta = consulta.add(Restrictions.eq("tipoDaMama", tipoDaMama));
}
if (noduloComCacificacao != null && !noduloComCacificacao.equals("Não")) {
consulta = consulta.add(Restrictions.eq("noduloComCacificacao",
noduloComCacificacao));
}
if (calcificacaoVascular != null && !calcificacaoVascular.equals("Não")) {
consulta = consulta.add(Restrictions.eq("calficicaoVascular",
calcificacaoVascular));
}
if (calcificacaoDeAspectoBenigno != null
&& !calcificacaoDeAspectoBenigno.equals("Não")) {
consulta = consulta
.add(Restrictions.eq("calficacaoDeAspectoBenigno",
calcificacaoDeAspectoBenigno));
}
if (peleDaMama != null && !peleDaMama.trim().isEmpty()) {
consulta = consulta.add(Restrictions.eq("peleDaMama", peleDaMama));
}
List<Laudo> resultado = consulta.list();
transacao.commit();
return resultado;
}
}
e finalmente, passo essa resposta através de uma camada de visão…
Preciso que essa resposta seja exibida no dataGrid.
quando executo a busca a minha resposta no Console é esta:
Hibernate:
select
this_.codigo as codigo4_6_,
this_.areaDensa as areaDensa4_6_,
this_.assimetriaDifusaLocalizacao as assimetr3_4_6_,
this_.assimetriaFocalLocalizacao as assimetr4_4_6_,
this_.calcificacaoDeAspectoBenigno as calcific5_4_6_,
this_.calcificacaoVascular as calcific6_4_6_,
this_.dilatacaoDuctal as dilataca7_4_6_,
this_.disfuncaoFocal as disfunca8_4_6_,
this_.distorcaoArquiteturalPorCirurgia as distorca9_4_6_,
this_.exame_codigo as exame26_4_6_,
this_.implanteComSinaisDeRuptura as implant10_4_6_,
this_.implanteIntegro as implant11_4_6_,
this_.linfonodosAxilares as linfono12_4_6_,
this_.linfonodosIntramamarios as linfono13_4_6_,
this_.medico_codigo as medico27_4_6_,
this_.microcalcificacaoDistribuicao as microca14_4_6_,
this_.microcalcificacaoForma as microca15_4_6_,
this_.microcalcificacaoLocalizacao as microca16_4_6_,
this_.noduloComCacificacao as noduloC17_4_6_,
this_.noduloComDensidadeDeGordura as noduloC18_4_6_,
this_.noduloComDensidadeHetereogena as noduloC19_4_6_,
this_.noduloContorno as noduloC20_4_6_,
this_.noduloLimite as noduloL21_4_6_,
this_.noduloLocalizacao as noduloL22_4_6_,
this_.noduloTamanho as noduloT23_4_6_,
this_.peleDaMama as peleDaMama4_6_,
this_.tipoDaMama as tipoDaMama4_6_,
e1_.codigo as codigo3_0_,
e1_.anamnese_codigo as anamnese7_3_0_,
e1_.data as data3_0_,
e1_.imagemCranioCaudalForcada as imagemCr3_3_0_,
e1_.imagemCraniocaudal as imagemCr4_3_0_,
e1_.imagemMedioLateralObliqua as imagemMe5_3_0_,
e1_.imagemPerfil as imagemPe6_3_0_,
e1_.radiologista_codigo as radiolog8_3_0_,
a2_.codigo as codigo0_1_,
a2_.alcoolismo as alcoolismo0_1_,
a2_.centroDeImagem_codigo as centroD17_0_1_,
a2_.cirurgiaMamografica as cirurgia3_0_1_,
a2_.drogas as drogas0_1_,
a2_.enfermeira_codigo as enfermeira18_0_1_,
a2_.exameAnteriores as exameAnt5_0_1_,
a2_.filhos as filhos0_1_,
a2_.gravida as gravida0_1_,
a2_.historicoCancer as historic8_0_1_,
a2_.historicoMenstrual as historic9_0_1_,
a2_.historicoRadioterapia as histori10_0_1_,
a2_.hormonio as hormonio0_1_,
a2_.lactacao as lactacao0_1_,
a2_.mamografiaAnterior as mamogra13_0_1_,
a2_.nodulo as nodulo0_1_,
a2_.pesoAtual as pesoAtual0_1_,
a2_.requisicao_codigo as requisicao19_0_1_,
a2_.tabagismo as tabagismo0_1_,
r3_.codigo as codigo8_2_,
r3_.data as data8_2_,
r3_.medico_codigo as medico3_8_2_,
r3_.paciente_codigo as paciente4_8_2_,
p4_.codigo as codigo6_3_,
p4_.bairro as bairro6_3_,
p4_.celular as celular6_3_,
p4_.cep as cep6_3_,
p4_.cidade as cidade6_3_,
p4_.complemento as compleme6_6_3_,
p4_.cor as cor6_3_,
p4_.cpf as cpf6_3_,
p4_.dataDeNascimento as dataDeNa9_6_3_,
p4_.email as email6_3_,
p4_.estado as estado6_3_,
p4_.logradouro as logradouro6_3_,
p4_.nome as nome6_3_,
p4_.numero as numero6_3_,
p4_.rg as rg6_3_,
p4_.sexo as sexo6_3_,
p4_.telefone as telefone6_3_,
radiologis10_.codigo as codigo7_4_,
radiologis10_.bairro as bairro7_4_,
radiologis10_.celular as celular7_4_,
radiologis10_.cep as cep7_4_,
radiologis10_.cidade as cidade7_4_,
radiologis10_.complemento as compleme6_7_4_,
radiologis10_.cpf as cpf7_4_,
radiologis10_.crtr as crtr7_4_,
radiologis10_.email as email7_4_,
radiologis10_.estado as estado7_4_,
radiologis10_.logradouro as logradouro7_4_,
radiologis10_.nome as nome7_4_,
radiologis10_.numero as numero7_4_,
radiologis10_.senha as senha7_4_,
radiologis10_.sexo as sexo7_4_,
radiologis10_.telefone as telefone7_4_,
radiologis10_.usuario as usuario7_4_,
medico11_.codigo as codigo5_5_,
medico11_.bairro as bairro5_5_,
medico11_.celular as celular5_5_,
medico11_.cep as cep5_5_,
medico11_.cidade as cidade5_5_,
medico11_.complemento as compleme6_5_5_,
medico11_.cpf as cpf5_5_,
medico11_.crm as crm5_5_,
medico11_.email as email5_5_,
medico11_.estado as estado5_5_,
medico11_.logradouro as logradouro5_5_,
medico11_.nome as nome5_5_,
medico11_.numero as numero5_5_,
medico11_.senha as senha5_5_,
medico11_.sexo as sexo5_5_,
medico11_.telefone as telefone5_5_,
medico11_.usuario as usuario5_5_
from
Laudo this_
inner join
Exame e1_
on this_.exame_codigo=e1_.codigo
inner join
Anamnese a2_
on e1_.anamnese_codigo=a2_.codigo
inner join
Requisicao r3_
on a2_.requisicao_codigo=r3_.codigo
inner join
Paciente p4_
on r3_.paciente_codigo=p4_.codigo
left outer join
Radiologista radiologis10_
on e1_.radiologista_codigo=radiologis10_.codigo
left outer join
Medico medico11_
on this_.medico_codigo=medico11_.codigo
where
p4_.cor=?
and a2_.historicoCancer=?
and a2_.gravida=?
and p4_.dataDeNascimento=?
and this_.noduloLocalizacao=?
and this_.noduloTamanho=?
and this_.noduloContorno=?
and this_.noduloLimite=?
and this_.microcalcificacaoLocalizacao=?
and this_.microcalcificacaoForma=?
and this_.microcalcificacaoDistribuicao=?
and this_.tipoDaMama=?
and this_.noduloComCacificacao=?
and this_.peleDaMama=?
Alguém sabe no que estou errando???
Desde Já Obrigado!!!