Listar as tabelas envolvidas no relacionamento muitos-para-muitos

0 respostas
J

Tenho um relaciomanto muitos-para-muitos onde eu tenho duas tabelas Polo e Empresa e faço um join table onde eu criei uma tabela com a chave da duas tabelas envolvidas.Criei a classe PoloEmpresa e PoloEmpresaPK, eu queri fazer um list ou um sql que retorne oa campos para eu jogar em mum <p:dataTable>. O comando sql est legal ele me retorna mas eu não consigo apontar o resulta para as classes para pode listar no datatable.

Veja o sql

StringBuffer sql = new StringBuffer();

sql.append(“select p.<em>,e.</em> from polo p join polo_empresa pe “);

sql.append(” on(p.id_polo = pe.id_polo) join “);

sql.append(” empresa e on(e.id_empresa = pe.id_empresa)”);		

SQLQuery query = this.session.createSQLQuery(sql.toString());

query.addEntity(“e”,Empresa.class);

query.addEntity(“p”,Polo.class);		

return query.list();

classe PK

@Embeddable
public class PoloEmpresaPK implements Serializable{

private static final long serialVersionUID = 2145230426707580106L;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="id_polo")
private Polo polo;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_empresa")
private Empresa empresa;

public Polo getPolo() {
	return polo;
}

public void setPolo(Polo polo) {
	this.polo = polo;
}

public Empresa getEmpresa() {
	return empresa;
}

public void setEmpresa(Empresa empresa) {
	this.empresa = empresa;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((empresa == null) ? 0 : empresa.hashCode());
	result = prime * result + ((polo == null) ? 0 : polo.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	PoloEmpresaPK other = (PoloEmpresaPK) obj;
	if (empresa == null) {
		if (other.empresa != null)
			return false;
	} else if (!empresa.equals(other.empresa))
		return false;
	if (polo == null) {
		if (other.polo != null)
			return false;
	} else if (!polo.equals(other.polo))
		return false;
	return true;
}

Classe polo empresa

@Entity

@Table(name=polo_empresa)

public class PoloEmpresa implements Serializable {

/**

*

*/

private static final long serialVersionUID = 6176645767173588871L;

@EmbeddedId

private PoloEmpresaPK chaveComposta;

public PoloEmpresaPK getChaveComposta() {

return chaveComposta;

}

public void setChaveComposta(PoloEmpresaPK chaveComposta) {

this.chaveComposta = chaveComposta;

}

classe polo

@Entity

@Table(name=polo)

@SequenceGenerator(name=seq_polo,sequenceName=seq_polo)

public class Polo implements Serializable{
private static final long serialVersionUID = -6638112313261035555L;

@Id	
@GeneratedValue(generator="seq_polo",strategy=GenerationType.AUTO)
@Column(name="id_polo")
private Integer codigoPolo;	

@Column(name="nome",length=40)
private String nome ;	


@ManyToMany(fetch=FetchType.LAZY)	
@JoinTable(name="polo_empresa",joinColumns={@JoinColumn(name="id_polo")},
		inverseJoinColumns={@JoinColumn(name="id_empresa")})
@Cascade(CascadeType.SAVE_UPDATE)		
@org.hibernate.annotations.ForeignKey(name = "fk_polo_empresa")	
//private Set<Empresa> empresa = new HashSet<Empresa>();
private Collection<Empresa> empresaList;

classe empresa

@Entity

@Table(name=empresa)

@SequenceGenerator(name=seq_empresa,sequenceName=seq_empresa)

public class Empresa implements Serializable{
private static final long serialVersionUID = 498803724556690440L;

@Id
@GeneratedValue(generator="seq_empresa",strategy= GenerationType.AUTO)
@Column(name="id_empresa")
private Integer codigoEmpresa;

@Column(name="nome",length=40)
private String nome ;

@Column(name="nome_fan",length=20)
private String nomeFantasia ;
Criado 28 de março de 2012
Respostas 0
Participantes 1