Запрос значений базы данных из столбца в Grails с помощью Hibernate - PullRequest
0 голосов
/ 24 июня 2011

Я новичок в Grails, и я пытаюсь получить запись в базе данных. Соединение с базой данных работает без проблем.

В базе данных Ive есть класс с именем «Correct», который содержит правильные ответы (логические значения), поэтому его структура:

id | версия | ответ | ... | ответь | 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 ....?? 1017 *

спасибо: -)

Ответы [ 3 ]

2 голосов
/ 24 июня 2011

вместо:

def correctanswers = Correct.executeQuery("from Correct answers where answers.lpicid=" + lpicid);

Разве вы не можете сделать:

def correctanswers = Correct.findByLpicid( lpicid )
1 голос
/ 24 июня 2011

Если вы можете использовать id напрямую, то самый простой и эффективный способ - позвонить Correct.get(id).

В противном случае обратите внимание на метод динамической области findBy.

0 голосов
/ 24 июня 2011

Я не вижу структуру вашего домена, но я бы подумал, удалив '()' из конца correctanswers.answera (); что это должно работать, потому что это не метод. Я предполагаю, что «correctanswers» как отдельный «доменный класс».

def correctanswers = Correct.executeQuery("from Correct answers where answers.lpicid=" + lpicid);

def correcta = correctanswers.answera;
...