繁体   English   中英

休眠-加载孩子

Hibernate - load children

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有以下休眠映射:

<class name="Database.Content" table="..." schema="" catalog="...">
    <id name="id">
        <column name="id" sql-type="int" not-null="true"/>
    </id>
    <property name="week">
        <column name="week" sql-type="int"/>
    </property>
    <property name="day">
        <column name="day" sql-type="int"/>
    </property>
    <property name="hour">
        <column name="hour" sql-type="int"/>
    </property>
    <property name="type">
        <column name="type" sql-type="int" not-null="true"/>
    </property>
    <many-to-one name="group" class="Database.Group">
        <column name="group"/>
    </many-to-one>
    <many-to-one name="table" class="Database.Table">
        <column name="table" not-null="true"/>
    </many-to-one>
    <list name="entries" inverse="true" table="...">
        <key>
            <column name="content" not-null="true"/>
        </key>
        <list-index column="id"/>
        <one-to-many not-found="ignore" class="Database.Entry"/>
    </list>
</class>
<class name="Database.Entry" table="..." schema="" catalog="...">
    <id name="id">
        <column name="id" sql-type="int" not-null="true"/>
    </id>
    <property name="teacher">
        <column name="teacher" sql-type="int" not-null="true"/>
    </property>
    <property name="course">
        <column name="course" sql-type="int" not-null="true"/>
    </property>
    <property name="room">
        <column name="room" sql-type="int" not-null="true"/>
    </property>
    <property name="p">
        <column name="p" sql-type="int" not-null="true"/>
    </property>
    <many-to-one name="content" class="Database.Content" fetch="join" lazy="false">
        <column name="content" not-null="true"/>
    </many-to-one>
</class>

现在,我尝试使用相应的entries查询所有contents

List<Content> contents = session.createQuery("from Content c WHERE c.day IN :days ").setParameterList("days", days).list();

该查询返回正确的响应。 但是,当我执行以下操作时:

contents.get(0).getEntries()

有很多空值。 渴望为每个content加载所有对应entries的正确方法是什么?

我有大约20,000条content记录,并且大多数记录只有一个条目。

如果将lazy="false"entries列表, entries收到Java heap space错误。


我最终获取entries并加入contents

List<Entry> entries = session.createQuery("select e from Entry e Join e.content c WHERE c.day IN :days ").setParameterList("days", days).list();

我也lazyproxy

<many-to-one name="content" class="Database.Content" fetch="join" lazy="proxy">
    <column name="content" not-null="true"/>
</many-to-one>
2 个回复

添加lazy = false属性:

 <list name="entries" inverse="true" table="up_timetable_entries" lazy="false">

希望对您有所帮助!

尝试致电:

contents.get(0).getEntries()。size();

强迫冬眠,以使孩子们。

1 在用户点击时休眠加载父母的孩子吗?

这是我的休眠POJO类。 从我对休眠的了解中,有两种方法。 (我仍然是菜鸟:P) 要么 后来的一个使用刷新,是我在尝试Hibernate时偶然发现的。 Q.1最好的方法是什么? Q.2当仅通过调用getter方法可以获取所有子级时,为什么使用Criteria ...

2 加载孩子的孩子的孩子

我有一棵对象树,其大小可能是无限的。 实体类别还有其他类别实体作为子实体。 换句话说,类别可以具有子类别:深度是无限的。 在下面,您可以看到我实体的简化版本 直到几个小时之前,我一直都在懒惰加载,所以我很容易就能得到孩子的孩子。 现在,我禁用了延迟加载,因为我遇到了问 ...

3 休眠-至少一个孩子

这个问题有点问我要达到的目标,但实际上并没有一个答案: Hibernate validate ManyToOne至少有一个 我有两个对象(A和B)。 A是父母。 B是孩子。 这是一对多的关系,但是,我需要每个A至少有一个B。B中所有字段都有默认值,因此,如果创建的A没有B,则可以将默 ...

4 休眠检索父母/孩子

因此,当我具有一对多的双向关系时,如何确保根据需要从数据库中获取它们? 例如: 在家长班: 在儿童班: 我只是不确定如何确定当我有父母时,我可以获得其孩子的清单,反之亦然。 不确定Hibernate是如何处理的。 如果要生孩子,我的第一个直觉是: 与此 ...

5 休眠查询来获取孩子

我想获取所有儿童用户。 我有两列父母和孩子 在父表中- 在子表中- 如果父母A-生育所有孩子 如果父母B-获得BA,BB,CA,CC 如果父母C--得到CA,CC 我VL得到答案,但它不是单一的查询..因此任何休眠的单一查询来做到这一点 更新... ...

6 休眠 - 孩子被移除,但父母没有

我有两个实体: 和 } 我正在使用 Spring 的 JpaRepository delete(T entity) 方法来删​​除一个分支。 它所做的只是一堆选择查询,删除广播规则(如果存在),但不会删除分支实体本身 - 删除 SQL 查询不会发送到数据库。 我尝试使用本机查询直接删除 ...

7 如何让休眠不查询孩子?

我在我的Spring Boot Java应用程序中实现HATEOAS,在HATEOAS中要做的一件事是不返回json响应中的child对象。 相反,您具有可以获取该对象的子代的链接。 一个例子是一家公司可以有很多员工。 如果对特定公司进行GET调用,则通常的响应将是公司的JSON对象, ...

8 休眠获取没有孩子的物品

假设我有一个包含Bars列表的Foo对象。 如果我在条件类的Bar类上创建别名,则我只会收到实际具有Bars的项目。 现在,如果我想让所有不带酒吧的Foos成为一体,则必须使用LEFT OUTER JOIN创建我的别名。 现在,我的Foo班有很多孩子(有孩子,有孩子,...)。 ...

9 将家长与孩子一起休眠

我对冬眠有点困惑, 在这里,我有一个父对象,并且这个父对象(假设A是父对象,B是子对象)与子对象B具有多对一的单向关系。 现在,我有了对象A和对象B。 我所做的是,我将所有子对象保存在数据库中,因此现在每个子对象都保存在db中并具有id。 现在我想为其相关的子对象保存父对象A ...

10 休眠:我不想删除孩子

我是意大利人,我为我的英语道歉。 我有两个POJO类,分别在我的Db中代表一个父表和一个子表。 家长。 Persona.java 儿童。 Telefono.java 我已经使用注释来映射数据库中的这些类。 当我尝试从数据库中删除角色时,休眠删除与该角色相关联 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM