我是grails的新手,我尝试获取数据库条目。 数据库连接没有问题。
在数据库中我有一个名为“Correct”的类,其中包含正确答案(布尔值),因此其结构为:
id |版本| answera | ...... |回答| lpicid
lpicid对问题的引用。对于每个lpicid,只有一个条目。主键是id。
现在,当我想要调用正确的答案并将答案保存在变量中时,这确实不起作用:
def correctanswers = Correct.executeQuery("from Correct answers where answers.lpicid=" + lpicid);
def correcta = correctanswers.answera();
我得到一个数据库条目,我可以看到(lpicid只是一个def号码),但correctanswers.answera()不起作用。我总是得到这样的信息:
groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.answera() is applicable for argument types: () values: []
Possible solutions: inspect(), clear(), clear(), clear(), any(), asList()
at com.lpic.LpicSimulatorController$_closure2.doCall(LpicSimulatorController.groovy:76)
at com.lpic.LpicSimulatorController$_closure2.doCall(LpicSimulatorController.groovy)
at java.lang.Thread.run(Thread.java:662)
我如何解决这个问题才能得到answera,answerb ....值?
谢谢你: - )答案 0 :(得分:2)
而不是:
def correctanswers = Correct.executeQuery("from Correct answers where answers.lpicid=" + lpicid);
你不能这样做:
def correctanswers = Correct.findByLpicid( lpicid )
答案 1 :(得分:1)
如果您可以直接使用ID,那么最简单,最有效的方法就是致电Correct.get(id)
。
否则请查看findBy
动态域方法。
答案 2 :(得分:0)
我看不到你的域类结构,但我会想通过从correctanswers.answera()的末尾删除'()';它应该工作,因为它不是一种方法。我假设'correctanswers'是一个单独的'ansera'域类。
def correctanswers = Correct.executeQuery("from Correct answers where answers.lpicid=" + lpicid);
def correcta = correctanswers.answera;