Попытка запустить простое приложение Grails для динамических строительных лесов приводит к ошибке ORA-00904 - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь создать простой CRUD для таблицы в базе данных Oracle 12, поэтому я создал приложение Grails, передал учетные данные базы данных в application.yml, создал контроллер и класс домена с именем ConfigTest (столбец вызывается CONFIG_TEST в реальной БД) и добавляет к ним простой код.

Класс домена:

package moduleprototype

class ConfigTest {
    int configid
    String name
    String type
    String value
    String description
    int status

    static constraints = {
    }
}

Контроллер:

package moduleprototype

class ConfigTestController {

    static scaffold = ConfigTest
}

Столбцы в моей таблице:

  • CONFIGID NUMBER
  • ИМЯ VARCHAR2
  • ТИП VARCHAR2
  • ЗНАЧЕНИЕ CLOB
  • ОПИСАНИЕ VARCHAR2
  • СОСТОЯНИЕ NUMBER

Таким образом, похоже, что оно должно работать, но когда я запускаю приложение и захожу на http://localhost:8080/ConfigTest, я получаю:

2019-01-08 15: 06: 28.552 ОШИБКА --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper: ORA-00904: "ЭТО _". "ВЕРСИЯ": неверный идентификатор

2019-01-08 15: 06: 28.856 ОШИБКА --- [nio-8080-exec-1] o.g.web.errors.GrailsExceptionResolver: OracleDatabaseException произошло при обработке запроса: [GET] / ConfigTest ORA-00904: "ЭТО _". "ВЕРСИЯ": неверный идентификатор

Почему это так? Что я делаю неправильно? Из того, что я понял, подобные ошибки обычно связаны с проблемами именования, но здесь кажется, что с именами все в порядке, и модель также следует принципам обработки имен Grails (или так кажется).

РЕДАКТИРОВАТЬ: Я также пытался сделать пользовательское статическое отображение, чтобы быть уверенным, что все соответствует тому, что я думал, поэтому я добавил это в класс модели:

static mapping = {
    table 'CONFIG_TEST'

    configid column: 'CONFIGID'
    name column: 'NAME'
    type column: 'TYPE'
    value column: 'VALUE'
    description column: 'DESCRIPTION'
    status column: 'STATUS'

}

Но это никак не помогает, сохраняется та же ошибка: (

1 Ответ

0 голосов
/ 09 января 2019

Grails ожидает столбец с именем version в вашей таблице, если вы не отключите его в блоке сопоставления в своем доменном классе, например:

static mapping = {
    version false
}

Столбец версии используется для оптимистической блокировки.

См. документы для полной информации.

...