[code]
public class Manutencao implements Serializable{
private Set servidor;
@ManyToMany(fetch=FetchType.LAZY) @JoinTable(name=“manutencao_servidor”,
joinColumns={@JoinColumn(name=“fk_manutencao”)},
inverseJoinColumns={@JoinColumn(name=“fk_servidor”)})
public Set getServidor() {
return servidor;
}
public void setServidor(Set servidor) {
this.servidor = servidor;
} [/code]
Fazendo isso ele cria uma tabela “manutencao_servidor”. Até aí funciona blz!
O problema é na critéria, como eu faço para listar todas as manutenções de um servidor?
@SuppressWarnings("unchecked")
public List<Manutencao> pesquisaManu(){
Criteria cri = session.createCriteria(Manutencao.class);
cri.add(Restrictions.eq("servidor", 1L));
return cri.list();
}
Esta critéria acima funcionaria para mapeamento @ManyToOne.
Teria fazer isso na critéria, ao invés de um sql ou hql?
Lipe, valeu d+ deu certo, e ficou muito elegante a pesquisa…
Só alterei o manytomany da classe Servidor para a collection de manutenções, para ele não criar um novo mapeamento na hora de gerar o banco pelo hibernate.
@ManyToMany(fetch=FetchType.LAZY, mappedBy="servidor")
public Set<Manutencao> getManutencoes() {
return manutencoes;
}
public void setManutencoes(Set<Manutencao> manutencoes) {
this.manutencoes = manutencoes;
}
Classe manutenção:
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="ctbc_datac_manutencao_servidor",
joinColumns={@JoinColumn(name="fk_manutencao")},
inverseJoinColumns={@JoinColumn(name="fk_servidor")})
public Set<Servidor> getServidor() {
return servidor;
}
public void setServidor(Set<Servidor> servidor) {
this.servidor = servidor;
}