Problema com auto-relacionamento no Hibernate

Fala galera!!!
Seguinte… tem um objeto (JObject) que pode ter N filhos e N pais JObject e cada JObject pode ser de um tipo (JObjectType)… eu fiz o mapeamento e parecia que tudo estava funcionando bem… porém… está acontecendo algo estranho quando eu peço para ele recuperar um lista de JObject de um certo JObjectType…
tenho um grupo de JObject do tipo equipamento e um grupo do tipo fornecedor… até aki tudo bem… quando faço uma busca por um tipo ou por outro o hibernate me retorna certinho… o problema rola quando eu relaciono um objeto equipamento1 com um fornecedor1, ambos sendo filhos de um outro objeto do tipo equipForn1, e relaciono outros objetos equipamento2 com fornecedor1 com outro objeto equipForn2… ambos os equipForn sendo filhos de outro objeto do tipo Compra…
quando faço uma busca pelos objetos do tipo fornecedores… o hibernate me retonar dois objetos iguais de fornecedor1 ao invés de apenas… já que só existe um fornecedor1 persistido no banco… não consegui entender o porquê isso está acontecendo…
Espero ter conseguido faze-los entender qual o meu problema… por favor… se alguém souber o que estou fazendo de erro me falem…

abraços a todos!!!

[code]public class JObject {

private int Id;
private JObjectType Type;
private List<JObject> ObjectsParent;
private List<JObject> ObjectsChildren;

public JObject() {
}

public int getId() {
return Id;
}

public void setId(int Id) {
this.Id = Id;
}

public JObjectType getType() {
return Type;
}

public void setType(JObjectType Type) {
this.Type = Type;
}

public void addChildren(JObject children)
{
this.ObjectsChildren.add( children );
}

public List<JObject> getObjectsParent() {
return this.ObjectsParent;
}

public void setObjectsParent(List<JObject> ObjectsParent) {
this.ObjectsParent = ObjectsParent;
}

public List<JObject> getObjectsChildren() {
return this.ObjectsChildren;
}

public void setObjectsChildren(List<JObject> ObjectsChildren) {
this.ObjectsChildren = ObjectsChildren;
}

} [/code]

[code]<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class JObject" table="OBJETO" dynamic-update="true" dynamic-insert="true">
<!-- Identificador da classe -->
<id name="Id" column="OBJE_CD_CHAVE" type="integer">
<generator class="increment"/>
</id>

	&lt;!-- Relacionamento da classe --&gt;
            &lt;!-- Com o JObjectType --&gt;
            &lt;many-to-one name=&quot;Type&quot; class=&quot;JObjectType&quot;
                         cascade=&quot;none&quot;  fetch=&quot;join&quot; update=&quot;true&quot; insert=&quot;true&quot; lazy=&quot;false&quot;
                         column=&quot;TIOB_CD_CHAVE&quot; 
            /&gt;                
            
            &lt;!-- Auto Relacionamento com JObject --&gt;
            &lt;bag name=&quot;ObjectsParent&quot; table=&quot;MAPEAMENTO_OBJETO&quot; inverse=&quot;true&quot; lazy=&quot;true&quot; outer-join=&quot;true&quot; &gt; 
                &lt;key column=&quot;OBJE_CD_CHAVE_FILHO&quot;/&gt;
                &lt;many-to-many column=&quot;OBJE_CD_CHAVE_PAI&quot; 
                              class=&quot;JObject&quot;/&gt;
            &lt;/bag&gt;
            
            &lt;bag name=&quot;ObjectsChildren&quot; table=&quot;MAPEAMENTO_OBJETO&quot; lazy=&quot;false&quot; cascade=&quot;save-update,persist&quot; &gt; 
                &lt;key column=&quot;OBJE_CD_CHAVE_PAI&quot;/&gt;
                &lt;many-to-many column=&quot;OBJE_CD_CHAVE_FILHO&quot;
                              class=&quot;JObject&quot;/&gt;
            &lt;/bag&gt; 
              
&lt;/class&gt;

</hibernate-mapping>[/code]