Im using Hibernate2 with Postgresql.
my mapping doc
Code:
<hibernate-mapping>
<class name="SubEspecialidade" table="SubEspecialidade" >
<id name="idSubEspecialidade" type="int" >
<generator class="increment" />
</id>
<property name="nome" type="string"/>
<many-to-one
name="especialidade"
class="Especialidade"
column="idespecialidade"
not-null="true"
/>
</class>
<class
name="Especialidade"
table="Especialidade"
>
<id
name="idEspecialidade"
type="integer"
column="idEspecialidade"
>
<generator class="increment" />
</id>
<property name="nome" type="string"/>
<property name="qtdRetorno" type="integer"/>
<property name="qtdDiaControleVaga" type="integer"/>
<set name="subEspecialidades"
table="subespecialidade"
cascade="all"
inverse="true"
lazy="true"
>
<key column="idsubespecialidade" />
<one-to-many class="SubEspecialidade" />
</set>
</class>
</hibernate-mapping>
The classes are just fine, with getters and setter... that's not the problem. I can easylly insert in the db. When I retrieve an Especialidade and list its subEspecialidades only the first inserted is showed!!!
my classes
[code]
public class Especialidade {
private Integer idEspecialidade;
private String nome;
private int qtdRetorno;
private int qtdDiaControleVaga;
private Set subEspecialidades = new HashSet();
public Especialidade() {
}
public Especialidade(Integer id, String nome, int qtdRet, int qntDCV) {
setIdEspecialidade(id);
setNome(nome);
setQtdRetorno(qtdRet);
setQtdDiaControleVaga(qntDCV);
}
public Integer getIdEspecialidade() {
return idEspecialidade;
}
public String getNome() {
return nome;
}
public int getQtdDiaControleVaga() {
return qtdDiaControleVaga;
}
public int getQtdRetorno() {
return qtdRetorno;
}
public void setIdEspecialidade(Integer i) {
idEspecialidade = i;
}
public void setNome(String string) {
nome = string;
}
public void setQtdDiaControleVaga(int i) {
qtdDiaControleVaga = i;
}
public void setQtdRetorno(int i) {
qtdRetorno = i;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof Especialidade))
return false;
final Especialidade esp = (Especialidade) obj;
if (esp.getIdEspecialidade() != getIdEspecialidade())
return false;
if (esp.getNome() != getNome())
return false;
if (esp.getQtdDiaControleVaga() != getQtdDiaControleVaga())
return false;
if (esp.getQtdRetorno() != getQtdRetorno())
return false;
return true;
}
public int hashCode() {
return (getNome().hashCode() * 29);
}
public String toString() {
return "{ "
+ getIdEspecialidade()
+ " , "
+ getNome().trim()
+ " , "
+ getQtdRetorno()
+ " , "
+ getQtdDiaControleVaga()
+ " } ";
}
public Set getSubEspecialidades() {
return subEspecialidades;
}
public void setSubEspecialidades(Set set) {
subEspecialidades = set;
}
public void addSubEspecialidade(SubEspecialidade subEsp) {
subEspecialidades.add(subEsp);
}
public void listaSubEspecialidades() {
Iterator it = subEspecialidades.iterator();
SubEspecialidade s;
int i = subEspecialidades.size();
System.out.println("qnt de elementos = " + i);
while (it.hasNext()) {
s = (SubEspecialidade) it.next();
System.out.println(s);
}
}
}
// ============================================
public class SubEspecialidade {
private Integer idSubEspecialidade;
private String nome;
private Especialidade especialidade;
/**
*
*/
public SubEspecialidade() {
}
/**
*
*/
public SubEspecialidade(Integer id, String nome, Especialidade esp) {
idSubEspecialidade = id;
this.nome = nome;
this.especialidade = esp;
}
/**
* @return
*/
public Integer getIdSubEspecialidade() {
return idSubEspecialidade;
}
/**
* @return
*/
public String getNome() {
return nome;
}
/**
* @param i
*/
public void setIdSubEspecialidade(Integer i) {
idSubEspecialidade = i;
}
/**
* @param string
*/
public void setNome(String string) {
nome = string;
}
public Especialidade getEspecialidade() {
return especialidade;
}
public void setEspecialidade(Especialidade especialidade) {
this.especialidade = especialidade;
}
public String toString() {
String out = " { " + getIdSubEspecialidade() + " , " + getNome().trim();
if (getEspecialidade() == null) {
out += " , null ";
} else
out += " , " + getEspecialidade().toString();
out += " } ";
return out;
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof SubEspecialidade) {
return false;
}
final SubEspecialidade se = (SubEspecialidade) obj;
if (getNome().equals(se.getNome()))
if (getEspecialidade().equals(se.getEspecialidade()))
return true;
return false;
}
/*
* consultar acab para restri