2016-04-24 71 views
1

在我的應用程序中,我有一個grails域類Student。我在src.java中也有幾個類,最初是用普通的java編寫的。來自java源的Grails域類方法錯誤:找不到符號

在某些方法的類,我試圖讓學生喜歡這個集合中的一個:

this.students = new ArrayList<Student>(Student.findAll()); 

Grails的包是進口的,的IntelliJ不抱怨,但我得到foolwing錯誤,而試圖編譯。

[groovyc] org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
    [groovyc] Compile error during compilation with javac. 
    [groovyc] F:\path\ProjectName\src\java\grb\StudentSchedule.java:58: error: cannot find symbol 
    [groovyc]   this.students = new ArrayList<Student>(Student.findAll()); 
    [groovyc]              ^
    [groovyc] symbol: method findAll() 
    [groovyc] location: class Student 

我一直在嘗試不同的方法,對學生,但都給了我同樣的錯誤 - 找不到符號。

+2

Grails向所有域類動態添加'findAll()'方法。所以調用方法依賴於Groovy的動態調度來查找方法,然後執行它。因爲該方法本身不存在,所以不能直接從Java調用它。 –

+0

Emmanuel,感謝您的評論!有什麼方法可以解決問題嗎? –

+0

在groovy而不是Java中編寫這些類 –

回答

3

由於Grails docs狀態:你也可以寫Grails領域類在Java中
你必須使用org.codehaus.groovy.runtime.InvokerHelper從Java
欲瞭解更多信息,請參閱本mailing list
示例代碼

import my.package.User 
import org.codehaus.groovy.runtime.InvokerHelper; 

List allInstances = (List)InvokerHelper.invokeMethod(User.class, "list", null)); 

User one=(User)InvokerHelper.invokeMethod(User.class, "get", id); 

MAYB e this post也可以提供幫助。
但我同意在Groovy中編寫類的想法。

+1

謝謝米克利斯!這就是我最終做的,它的工作! –

+0

太棒了。總是很酷它有幫助! –