当前位置: 首页 > 知识库问答 >
问题:

Spring Boot。从父实体的页面获取子实体的页面

俞新翰
2023-03-14

我正在使用带有mysql数据库的Spring Boot。我想知道如何从父实体分页子实体。

以下是使用案例:

父实体与子实体有单向的一对一关系。下面是一个代码示例:

@Entity
public class Parent{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "dateTime", nullable = false)
    private LocalDateTime dateTime;

    @OneToMany(targetEntity = Child.class, cascade = 
    CascadeType.ALL,fetch = FetchType.LAZY, orphanRemoval = true)
    @JoinColumn(name = "parent_id")
    private Set<Child> childs;
    ......
}

@Entity
public class Child {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;
    ......
}

public interface ParentRepository extends JpaRepository<Parent, Long>{}
public interface ChildRepository extends JpaRepository<Child, Long>{}

我需要得到父dateTime在X和Y之间的所有子实体,但要得到子实体的页面。

任何想法如何做到这一点?

我得到了dateTime在X和Y之间的父页面。从这个父页面,我得到了所有父页面的孩子列表,因此来自父母的页面信息与孩子的不一样。

一个解决方案是让所有的父母和父母得到所有的孩子,并返回所有的孩子,但我需要这是可分页的。

谢谢你所有的时间。

共有2个答案

姚浩歌
2023-03-14

如果您最多想要N个子级,您可以将查询反转。类似于JPQL/HQL中的以下内容:

SELECT c, p FROM Child c, Parent p WHERE p.dateTime BETWEEN :start AND :end AND c MEMBER OF p.childs

但是这个查询不是很有效,因为它会创建一个子查询。因此,如果您可以更改模型,请将反向< code>@ManyToOne关联添加到child,并使用以下查询:

SELECT c FROM Child c JOIN FETCH c.parent p WHERE p.dateTime BETWEEN :start AND :end
魏航
2023-03-14

SELECT*From子级c,其中c.parent_id(SELECT id From父级,其中dateTime介于'2020-09-12 19:12:12'和'2020-09-12 20:12:12'之间);

 类似资料:
  • Javers v5.6.3 我有一个父实体,其中包含一系列子实体。当我区分两个父母列表,发现一个孩子有变化时,我需要知道哪个父母包含变化的孩子。 我的实体: 我想要区分的是: 为了简洁起见,切换到Groovy: 我是如何区分的: 输出: 我的问题是: 如何发现哪个父级包含子级/c1? 除了我有一个老板集合之外,这类似于应该检测薪酬变化()示例。使用该示例,给定具有不同下属的老板列表,如何找出的老板

  • 本文向大家介绍iframe父页面如何获取子页面的元素?相关面试题,主要包含被问及iframe父页面如何获取子页面的元素?时的应答技巧和注意事项,需要的朋友参考一下 在父页面监听 onmessage,子页面 postMessage。 $('iframe')[0].contentWindow.document.getElementById document.frames['xx'].document.

  • 我想通过在父实体上调用保存来将父实体和子实体一起保存到MySQL数据库中。父实体和子实体之间有一对一的映射。父ID是自动生成的,我们需要在子实体中使用与子实体相同的pk。 我使用的是Spring数据JPA2.0(JPA提供程序是Hibernate)和Spring MVC框架。当尝试插入实体时,我遇到以下错误。 根本原因 这是我的数据库模式: 以下是我的Java实体父实体: 儿童性: 这是我的主要方

  • 我将JPA2与Hibernate一起使用。有两个实体类,和。最后一个是第一个的继承实体。使用SINGLE_TABLE继承策略。当我尝试通过从id=“123456”的CardElement中查询

  • 如何返回与JPA中的父级有关系的实体列表? 我有一个用户实体,在名为的属性上有@OneToMany映射。子实体为Pet类型。这只是一种单向关系。 如何在JPA中编写返回给定用户的所有宠物的连接?

  • 我有vehicleId和vehicleName的值,我想从这两个属性值中获取User对象。 我不想创建一个车辆存储库仅仅是为了找到用户对象,我知道可以通过创建一个车辆存储库来实现,它扩展了springdatajpa中的JPA存储库。