Selecionando duas tabelas com Java+Spring FrameWorks+hibernate

2 respostas
R

Queria saber se alguma forma pra fazer, um método que selecione duas tabelas
no caso paciente e endereço e mim traga o endereço de cada paciente.

minhas classes estão assim:

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

@Entity
public class Paciente extends Pessoa {

private String trazidoPor;
private String acompanhante;
private String procedencia;
private String meiodoDeTransporte;
private String dispositivoMedico;

//public Prontuario myProntuario;


public String getTrazidoPor() {
	return trazidoPor;
}

public void setTrazidoPor(String trazidoPor) {
	this.trazidoPor = trazidoPor;
}

public String getAcompanhante() {
	return acompanhante;
}

public void setAcompanhante(String acompanhante) {
	this.acompanhante = acompanhante;
}

public String getProcedencia() {
	return procedencia;
}

public void setProcedencia(String procedencia) {
	this.procedencia = procedencia;
}

public String getMeidoDeTransporte() {
	return meiodoDeTransporte;
}

public void setMeidoDeTransporte(String meidoDeTransporte) {
	this.meiodoDeTransporte = meidoDeTransporte;
}

public String getDispositivoMedico() {
	return dispositivoMedico;
}

public void setDispositivoMedico(String dispositivoMedico) {
	this.dispositivoMedico = dispositivoMedico;
}
//	public Prontuario getMyProntuario() {

//		return myProntuario;

//	}

//

//	public void setMyProntuario(Prontuario myProntuario) {

//		this.myProntuario = myProntuario;

//	}

}

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.OneToOne;

import javax.persistence.CascadeType;

import org.hibernate.annotations.Cascade;

import pep.javaFlex.model.entity.Endereco;

@Entity

public class Pessoa{

@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long idPessoa;
private String nomePessoa;
private long idadePessoa;
private int cpfPessoa;
private int rgPessoa;
private String sexoPessoa;
private String paiPessoa;
private String maePessoa;
private String dataNascimentoPessoa;
private String telefResidencial;
private String telefCelular;
private String estadoCivil;

@OneToOne(cascade = CascadeType.ALL)
private Endereco endereco;
  
public long getIdPessoa() {
	return idPessoa;
}
public void setIdPessoa(long idPessoa) {
	this.idPessoa = idPessoa;
}
public String getEstadoCivil() {
	return estadoCivil;
}
public void setEstadoCivil(String estadoCivil) {
	this.estadoCivil = estadoCivil;
}
public Endereco getEndereco() {
	return endereco;
}
public void setEndereco(Endereco endereco) {
	this.endereco = endereco;
}
public String getNomePessoa() {
	return nomePessoa;
}
public void setNomePessoa(String nomePessoa) {
	this.nomePessoa = nomePessoa;
}
public long getIdadePessoa() {
	return idadePessoa;
}
public void setIdadePessoa(long idadePessoa) {
	this.idadePessoa = idadePessoa;
}
public long getCpfPessoa() {
	return cpfPessoa;
}
public void setCpfPessoa(int cpfPessoa) {
	this.cpfPessoa = cpfPessoa;
}
public long getRgPessoa() {
	return rgPessoa;
}
public void setRgPessoa(int rgPessoa) {
	this.rgPessoa = rgPessoa;
}
public String getSexoPessoa() {
	return sexoPessoa;
}
public void setSexoPessoa(String sexoPessoa) {
	this.sexoPessoa = sexoPessoa;
}
public String getPaiPessoa() {
	return paiPessoa;
}
public void setPaiPessoa(String paiPessoa) {
	this.paiPessoa = paiPessoa;
}
public String getMaePessoa() {
	return maePessoa;
}
public void setMaePessoa(String maePessoa) {
	this.maePessoa = maePessoa;
}
public String getDataNascimentoPessoa() {
	return dataNascimentoPessoa;
}
public void setDataNascimentoPessoa(String dataNascimentoPessoa) {
	this.dataNascimentoPessoa = dataNascimentoPessoa;
}
public String getTelefResidencial() {
	return telefResidencial;
}
public void setTelefResidencial(String telefResidencial) {
	this.telefResidencial = telefResidencial;
}
public String getTelefCelular() {
	return telefCelular;
}
public void setTelefCelular(String telefCelular) {
	this.telefCelular = telefCelular;
}

}

package pep.javaFlex.model.entity;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.OneToOne;

import pep.javaFlex.model.entity.Pessoa;

@Entity
public class Endereco {

@Id	@GeneratedValue(strategy = GenerationType.AUTO)
private long idEndereco;
private String rua;
private int numero;
private String cidade;
private String bairro;
private int cep;
private String uf;
private String pontoDeReferencia;

@OneToOne(mappedBy = "endereco")  
private Pessoa pessoa; 		

public Pessoa getPessoa() {
	return pessoa;
}

public void setPessoa(Pessoa pessoa) {
	this.pessoa = pessoa;
}

public long getIdEndereco() {
	return idEndereco;
}

public void setIdEndereco(long idEndereco) {
	this.idEndereco = idEndereco;
}

public String getRua() {
	return rua;
}

public void setRua(String rua) {
	this.rua = rua;
}

public int getNumero() {
	return numero;
}

public void setNumero(int numero) {
	this.numero = numero;
}

public String getCidade() {
	return cidade;
}

public void setCidade(String cidade) {
	this.cidade = cidade;
}

public String getBairro() {
	return bairro;
}

public void setBairro(String bairro) {
	this.bairro = bairro;
}

public int getCep() {
	return cep;
}

public void setCep(int cep) {
	this.cep = cep;
}

public String getUf() {
	return uf;
}

public void setUf(String uf) {
	this.uf = uf;
}

public String getPontoDeReferencia() {
	return pontoDeReferencia;
}

public void setPontoDeReferencia(String pontoDeReferencia) {
	this.pontoDeReferencia = pontoDeReferencia;
}

}

Eu fiz pra ele ler a tabelas paciente mais queria saber como ficaria com o endereço o método getList();

package pep.javaFlex.model.repository.hibernate;

import java.util.List;

import org.hibernate.SessionFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import org.springframework.stereotype.Repository;
import pep.javaFlex.model.entity.Endereco;

import pep.javaFlex.model.entity.Paciente;

import pep.javaFlex.model.repository.PacienteRepository;

@Repository(value=“PacienteRepository”)
public class PacienteHibernateDao extends HibernateDaoSupport implements PacienteRepository{

@Autowired
public PacienteHibernateDao(@Qualifier("sessionFactory")SessionFactory factory){
	super.setSessionFactory(factory);
} 

public void remove(Paciente paciente) {
	getHibernateTemplate().delete(paciente);		
	
}

public Paciente findById(Paciente paciente) throws Exception {
	 long id = paciente.getIdPessoa();
	 paciente = (Paciente) getHibernateTemplate().get(Paciente.class,paciente.getIdPessoa());
	 
	  if(paciente == null)			  
	   throw new Exception("O medico com ID:"+id+" do(a) "+Paciente.class.getSimpleName()+"não foi encontrado.");
	return paciente;
}

public Paciente save(Paciente paciente) {
	getHibernateTemplate().saveOrUpdate(paciente);
	return paciente;
}

@SuppressWarnings("unchecked")
public List<Paciente> getList() {
	return (List<Paciente>)getHibernateTemplate().loadAll(Paciente.class);		 
}

public Paciente alter(Paciente paciente){
	getHibernateTemplate().update(paciente);
	return paciente;		
}

}

2 Respostas

R

Boa tarde , se o relacionamento estiver ok quando vc trazer uma Pessoa e der um getEndereco ele vai carregar o endereço

agora seria bom vc colocar no enderco a notação
@JoinColumn(name = “person_id”)

//olha ai…
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/

R

Então eu to usando também FLEX esquece de dizer, como eu nao posso acessar o método getEndereco direto
no Java eu criei um método na classe do ActionScript chamada getEndereco mais não funcionou.

package pep.javaFlex.view.entity

{

[RemoteClass(alias=“pep.javaFlex.model.entity.Paciente”)]	

[Bindable]

public class Paciente

{
public var  idPessoa:Number;	
public var  trazidoPor:String;
public var  acompanhante:String;
public var  procedencia:String;
public var  meiodoDeTransporte:String;
public var  dispositivoMedico:String;	
public var  nomePessoa:String;
public var  idadePessoa:Number;
public var  cpfPessoa:Number;
public var  rgPessoa:Number;
public var  sexoPessoa:String;
public var  paiPessoa:String;
public var  maePessoa:String;
public var  dataNascimentoPessoa:String;
public var  telefResidencial:String;
public var  telefCelular:String;
public var  estadoCivil:String;
public var  endereco:Endereco;	

public function getEndereco():Endereco{
	return endereco;
}
  	  
}

}

Meu dataGrid ficou assim

<mx:DataGrid id=“dgPaciente” width=“100%” height=“100%” dataProvider="{listaPacientes}" editable=“true”>
mx:columns
<mx:DataGridColumn headerText=“Nome” dataField=“nomePessoa” editable=“true”/>
<mx:DataGridColumn headerText=“Idade” dataField=“idadePessoa” width=“50”/>
<mx:DataGridColumn headerText=“CPF” dataField=“cpfPessoa”/>
<mx:DataGridColumn headerText=“RG” dataField=“rgPessoa” width=“50”/>
<mx:DataGridColumn headerText=“Sexo” dataField=“sexoPessoa” width=“45” editorDataField=“sexoPessoa”/>
<mx:DataGridColumn headerText=“Pai” dataField=“paiPessoa” width=“70”/>
<mx:DataGridColumn headerText=“Mae” dataField=“maePessoa” width=“80”/>
<mx:DataGridColumn headerText=“D. Nascimento” dataField=“dataNascimentoPessoa”/>
<mx:DataGridColumn headerText=“F. Residencial” dataField=“telefResidencial”/>
<mx:DataGridColumn headerText=“F. Celular” dataField=“telefCelular”/>
<mx:DataGridColumn headerText=“Estado Civil” dataField=“estadoCivil”/>
<mx:DataGridColumn headerText=“Trazido Por” dataField=“trazidoPor”/>
<mx:DataGridColumn headerText=“Acompanhate” dataField=“acompanhate”/>
<mx:DataGridColumn headerText=“Procedencia” dataField=“procedencia”/>
<mx:DataGridColumn headerText=“MeioDeTransporte” dataField=“meioDeTransporte”/>
<mx:DataGridColumn headerText=“Dispositivo Médico” dataField=“dispositivoMedico”/>
<mx:DataGridColumn headerText=“Rua” dataField=“rua”/>
<mx:DataGridColumn headerText=“Numero” dataField=“numero”/>
<mx:DataGridColumn headerText=“Cidade” dataField=“cidade”/>
<mx:DataGridColumn headerText=“Bairro” dataField=“bairro”/>
<mx:DataGridColumn headerText=“Cep” dataField=“cep”/>
<mx:DataGridColumn headerText=“UF” dataField=“uf”/>

</mx:columns>				
	</mx:DataGrid>

Então coloquei assim na RUA

<mx:Text x=“10.05” y=“81.3” text=“RUA” fontWeight=“bold” fontSize=“12”/>
<mx:TextInput x=“46.35” y=“80” text="{Paciente(dgPaciente.selectedItem).getEndereco().rua}" width=“142.94” height=“22” borderStyle=“solid” fontSize=“12” fontWeight=“normal” id=“txtRuaPaciente”/>

Mais não funcionou.

Se alguem puder mim ajudar eu agradeço e muito

Criado 8 de outubro de 2010
Ultima resposta 9 de out. de 2010
Respostas 2
Participantes 2