galera, gostaria de saber se tem como popular uma datatable com uma lista com mais de um objeto.
Se não tiver como, alguém tem alguma outra alternativa?
quero enviar essa lista para uma tabela
private List<Historico> listahistorico = new ArrayList<Historico>();
segue abaixo a mainha classe :
public class Historico {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private Date data;
private Paciente paciente;
private Vacina vacina;
private Dose dose;
}
Sim.
É só você fazer o JOIN na sua consulta.
String sql = "select a.atributo,b.atributo ... ";
Sua consulta virá em forma de array, na view com var=“item” ficaria:
<h:outputText value="#{item[0]}" /> // será a.atributo do objeto A
<h:outputText value="#{item[1]}" /> // será b.atributo do objeto B
[b]Dois objetos…
Abraço.[/b]
Amigo, obrigado pela ajuda, mas eu acho q eu me esqueci de um detalhe, minha classe historico na verdade é uma joinTable onde eu tenho uma tabela paciente (id,nome,endereco…) minha tabela vacina(id,nome) e minha tabela dose (id,nome).na verdade o mapeamento correto da minha tabela é esse aqui
public class Historico {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private Date data;
@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
@JoinColumn(name="fk_paciente")
private Paciente paciente;
@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
@JoinColumn(name="fk_vacina")
private Vacina vacina;
@ManyToOne(cascade={CascadeType.MERGE}, fetch=FetchType.LAZY)
@JoinColumn(name="fk_dose")
private Dose dos;
estou fazendo a consulta assim:
Query q= em.createQuery("select h from Historico h where h.paciente.nome= :nomepaciente ");
q.setParameter("nomepaciente", nomepaciente);
listahistorico=q.getResultList();
e na minha dataTable estou fazendo assim:
<h:dataTable rows="15" width="900" value="#{relatorioBean.listahistorico}" rendered="#{! empty relatorioBean.listahistorico}"
var="p" >