2013-05-02 2 views
1

많은 아이들이있을 수 JPA의 부모 AGG에서 특정 자식 개체를 얻는 방법 :나는 2 부분 질문이

  1. 내가 아이 엔티티를 가지고있을 수있는 루트 AGG이에게 그들 중 다수. 나는 특정한 것을 얻는 효율적인 방법을 찾고있었습니다. 지금 당장 유일한 방법은 모든 것을 메모리에로드 한 다음 살펴 보는 것입니다. 내가 원했던 것은 기본적으로 db 밖의 색인으로 그들을 얻는 것이다. 모든 하위 항목을로드하지 않고 클래스를 통해 직접 수행 할 수있는 방법이 있습니까?

  2. Q1을 돌아 다니려는 시도에서 저장소 메소드를 만들었지 만 분명히 자동 생성을 수행하기 위해 스프링의 이름을 올바르게 지정하지 않았습니다. 나는 JPA/스프링을 사용하고 난 다음 저장소 있습니다

    public interface FooBarRepository extends CrudRepository<FooBar, Long>{ 
        SomeEntityThatIsAChildEntityOfTheRootAggFooBar findItemByFooBarAndOtherItem(FooBar foobar, OtherItem otherItem); 
    } 
    
  3. 이 문제는 문제가 해결되지 않는다는 것입니다

은, 봄을 알리는 예외가 발생 그것을 할 수 없습니다

는 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 

나는 '이'와 '이드'를 사용해 보았고 그 중 효과가 있었으면 좋겠다고했지만 어느 쪽도 효과가 없었습니다.

JPQL을 사용하여 가져 오려고했으나 자식 엔티티 테이블에 부모에 대한 FK가 실제로 포함되어 있지만 자식 엔티티에 부모에 대한 지식이 없기 때문에 작동하지 않습니다. 기본 쿼리

답변

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); 
    }