1

我有一个两部分的问题:

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

  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 来获取它,但这也不起作用,因为子实体不知道它的父实体,尽管子实体表确实包含父实体的 FK。

4

1 回答 1

0

尝试使用本机查询,例如:

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);
    }
于 2013-05-02T20:01:38.867 回答