Hibernate无休止的查询 - 球衣?

时间:2013-03-22 20:54:24

标签: java hibernate netbeans

让我说我有2个表(mysql) 表A: IDA,姓名,电话

表B: 美洲开发银行,DATA1,DATA2,IDA

表B中的

:idA用作外键,它通过mysql workbench配置。

现在,我正在尝试使用Hibernate和jersy(构建某种其他API)

我正在使用netbeans作为我的IDE。

最后如果得到:

  1. A.java
  2. B.java
  3. A.hbm.xml
  4. B.hbm.xml
  5. B.hbm.xml

    <many-to-one name="a" class="DataTypes.A"> 
        <column name="idA" length="45" not-null="true"  />
    </many-to-one>
    ...
    

    和B.java

    public class B implements java.io.Serializable {
    
         private Integer idB;
         private A a;
         ...
    }
    

    A.java

    public class User implements java.io.Serializable {
    
        private String idA;
        private String 
    private Set<B> bs = new HashSet<B>(0);
         ....
    }
    

    和A.hbm.xml中的某些部分

    <set name="bs" inverse="true">
        <key>
            <column name="idA" length="45" not-null="true" />
        </key>
        <one-to-many class="DataTypes.B" />
    </set>
    

    主要的问题是,当我使用hibernate获取表A的所有条目时,结果是所有A记录的hibernate查询,并且对于每个记录,它在获得其B(因为其外键)之后查找它的B(Set)它再看它的A等......

    2个问题:): 这个递归有什么解决方案吗?或者我应该删除此循环引用? 是我的数据库模型还行吗? (外键)

    感谢您的时间。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以按照以下方式配置b.hbm.xml;

<many-to-one name="a" class="DataTypes.A" fetch="select"> 
    <column name="idA" length="45" not-null="true"  />
</many-to-one>

和a.hbm.xml;

<set name="bs" inverse="true" lazy="true" fetch="select">
    <key>
        <column name="idA" length="45" not-null="true" />
    </key>
    <one-to-many class="DataTypes.B" />
</set>

现在应该可以使用