2012-02-25 5 views
2

나는이 디렉토리 모델의 방법이 있습니다플레이 프레임 워크의 일반적인 방법

public List<Directory> subdirectories() { 
    return find("select d from Directory d where d.parent = ?", this.id).fetch() 
} 

그리고이 테스트 :

@Test 
public void testSubdirectories() { 
    Directory d1 = Directory.find("byName", "d1").first(); 
    Directory d2 = Directory.find("byName", "d2").first(); 
    Directory d3 = Directory.find("byName", "d3").first(); 
    Directory d4 = Directory.find("byName", "d4").first(); 

    List<Directory> d1subs = d1.subdirectories(); 
    List<Directory> d2subs = d2.subdirectories(); 
    List<Directory> d3subs = d3.subdirectories(); 
    List<Directory> d4subs = d4.subdirectories(); 

    assertTrue(d1subs.contains(d2)); 
    assertTrue(d1subs.contains(d3)); 
    assertTrue(d2subs.isEmpty()); 
    assertFalse(d1subs.contains(d4)); 
    assertTrue(d3subs.contains(d4)); 
    assertTrue(d4subs.isEmpty()); 
} 

이 typechecks,하지만 테스트를 실행할 때, 내가받을를 다음 오류 :

A java.lang.IllegalArgumentException has been caught, Parameter value [5] was not matching type [models.Directory] 
In /test/models/DirectoryTest.java, line 37 : 
List<Directory> d1subs = d1.subdirectories(); 

누구나 문제를 해결할 수 있습니까?

답변

3

return find("select d from Directory d where d.parent.id = ?", this.id).fetch(); 

있어야하지 또는 동일한의 단축 버전은 절대적으로 올바른

return find("parent.id = ?", this.id).fetch(); 
+0

을해야합니다! 나는 그것에 대해 스스로 찾지 못해서 나쁘다고 느낍니다. 고마워, 즐거운 하루 되세요! – gnuvince

+1

언제나 기꺼이 도와 드리겠습니다. – Codemwnci