gpt4 book ai didi

java - 如何从 JPA 中的父聚合获取特定的子实体,其中可能有很多子实体

转载 作者:行者123 更新时间:2023-12-01 04:42:14 24 4
gpt4 key购买 nike

我有一个由两部分组成的问题:

  1. 我有一个根聚合,其中包含子实体,并且可能有大量子实体。我一直在寻找一种有效的方法来获得特定的。现在唯一的方法是将它们全部加载到内存中,然后查看它们。我想要的基本上是通过索引将它们从数据库中取出。有没有办法直接通过类来做到这一点,而不必加载所有子实体?

  2. 在尝试解决 Q1 问题时,我创建了一个存储库方法来执行此操作,但显然我没有正确命名它,以便 spring 进行自动生成。我正在使用 JPA/Spring 并且有以下存储库:

    public interface FooBarRepository extends CrudRepository<FooBar, Long>{
    SomeEntityThatIsAChildEntityOfTheRootAggFooBar findItemByFooBarAndOtherItem(FooBar foobar, OtherItem otherItem);
    }

问题是这不起作用,spring 抛出一个异常,指出它不能使用名为 FooBar 的属性

FactoryBean threw exception on object creation; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property order found for type com.bla.foobar.FooBar

我尝试过使用“This”和“Id”并希望它们能起作用,但它们都不起作用。

我尝试使用 JPQL 来获取它,但这也不起作用,因为子实体不知道其父实体,尽 pipe 实体表实际上包含父实体的 FK。

最佳答案

尝试使用 native 查询,例如:

public Child findChildByIndex(Parent parent, int index) {
return (Child) em.createNativeQuery("SELECT * FROM childs WHERE parent_id = ?" , Child.class)
.setParameter(0, parent.getId())
.setFirstResult(index)
.setMaxResults(1)
.getResultList().get(0);
}

关于java - 如何从 JPA 中的父聚合获取特定的子实体,其中可能有很多子实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com