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.,e. 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 ;