从Grails with Hibernate中的列查询数据库值

时间:2011-06-24 12:08:01

标签: database hibernate grails groovy hql

我是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 ....值?

谢谢你: - )

3 个答案:

答案 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;