2015-10-29 2 views
0

Я новичок в Grails, и я застрял с частью GORM. Я попытался следовать учебнику на этом сайте http://grails.asia/grails-tutorial-for-beginners-introduction-to-gorm о GORM, и первое, что нужно сделать, это создать класс домена. Однако после выполнения инструкций я всегда получал ошибку, показанную ниже.Grails возвращает ошибку сервера после создания класса домена

Мой контроллер для вставки записи

package nba 

class PlayerController { 

def index() { 

    //render "It's game time! NBA Game time" 
    Player p = new Player() 
    p.fname = "Lebron" 
    p.lname = "James" 
    p.position = "Small Forward" 
    p.age = 30 

    } 
} 

enter image description here enter image description here

enter image description here. В чем проблема с этим. Что мне не хватает? Пожалуйста помоги.

--- 
grails: 
profile: web 
codegen: 
    defaultPackage: myapp 
info: 
app: 
    name: '@[email protected]' 
    version: '@[email protected]' 
    grailsVersion: '@[email protected]' 
spring: 
groovy: 
    template: 
     check-template-location: false 

--- 
grails: 
mime: 
    disable: 
     accept: 
      header: 
       userAgents: 
        - Gecko 
        - WebKit 
        - Presto 
        - Trident 
    types: 
     all: '*/*' 
     atom: application/atom+xml 
     css: text/css 
     csv: text/csv 
     form: application/x-www-form-urlencoded 
     html: 
      - text/html 
      - application/xhtml+xml 
     js: text/javascript 
     json: 
      - application/json 
      - text/json 
     multipartForm: multipart/form-data 
     pdf: application/pdf 
     rss: application/rss+xml 
     text: text/plain 
     hal: 
      - application/hal+json 
      - application/hal+xml 
     xml: 
      - text/xml 
      - application/xml 
urlmapping: 
    cache: 
     maxsize: 1000 
controllers: 
    defaultScope: singleton 
converters: 
    encoding: UTF-8 
views: 
    default: 
     codec: html 
    gsp: 
     encoding: UTF-8 
     htmlcodec: xml 
     codecs: 
      expression: html 
      scriptlets: html 
      taglib: none 
      staticparts: none 
--- 
hibernate: 
cache: 
    queries: false 
    use_second_level_cache: true 
    use_query_cache: false 
    region.factory_class: 'org.hibernate.cache.ehcache.EhCacheRegionFactory' 

endpoints: 
jmx: 
    unique-names: true 

dataSource: 
pooled: true 
jmxExport: true 
driverClassName: com.mysql.jdbc.Driver 


environments: 
development: 
    dataSource: 
     dbCreate: create-drop 
     url: jdbc:mysql://localhost/grails_db 
     username: root 
     password: 
test: 
    dataSource: 
     dbCreate: update 
     url: jdbc:mysql://localhost/grails_db 
production: 
    dataSource: 
     dbCreate: update 
     url: jdbc:mysql://localhost/grails_db 
     properties: 
      jmxEnabled: true 
      initialSize: 5 
      maxActive: 50 
      minIdle: 5 
      maxIdle: 25 
      maxWait: 10000 
      maxAge: 600000 
      timeBetweenEvictionRunsMillis: 5000 
      minEvictableIdleTimeMillis: 60000 
      validationQuery: SELECT 1 
      validationQueryTimeout: 3 
      validationInterval: 15000 
      testOnBorrow: true 
      testWhileIdle: true 
      testOnReturn: false 
      jdbcInterceptors: ConnectionState 
      defaultTransactionIsolation: 2 # TRANSACTION_READ_COMMITTED 
+0

Вы забыли оставить свой код. Ошибка понятна, хотя вы получаете NullPointerException – dsharew

+0

Пожалуйста, посмотрите. Просто очень простой код – Eli

+0

, пожалуйста, не используйте изображение. Также опубликуйте код, который использует объект домена. – dsharew

ответ

1

К сожалению, я не видел ваш комментарий:

Во-первых, чтобы расширить свое присутствие на мой комментарий выше, и объяснить Grails поведение контроллера лучше. Я буду придерживаться того, что у вас есть другие варианты.

При объявлении действия в контроллере:

так что позволяет сказать, что мы имеем

class TestController { 
    def hello() { } 
} 

Вы можете или не имеет domainClass связанное с этим примером TestController, если вы сделали класс домена будет {package} /Test.groovy {соответствие конструкции имен контроллера}.

В этом примере у нас нет никакого контроллера домена и выше действий будут показывать что-то до тех пор, как вы создаете папку под видом под названием

test/hello.gsp 

Так что в тестовой папке создать hello.gsp и положить туда некоторые HTML ..

Если у вас не было

test/hello.gsp 

Тогда в контроллере вы должны определить, что для визуализации.

class TestController { 
     def hello() { 
      // render 'some text' 
      //render template: '/path/to/template', model: [params:params] 
      render view: '/path/to/gsp', model: [params:params] 
     } 
    } 

Вы тогда состояние:

Это, как я получил ошибку, когда я создал класс домена игрока и затем поместить имена полей (имя_файла, LNAME, положение, возраст), то был успешным, игрок таблицы создается в базе данных вместе с именами полей , но когда я перезапустил запуск сервера, таблица была удалена автоматически, а работающий сервер возвращает ошибку. В чем проблема?

Прежде всего, вам нужно спросить себя, вы настроили/установили какую-то БД, чтобы увидеть, как он работает изначально?

Grails предоставляет вам встроенную базу данных, которая находится в вашей памяти как часть приложения по умолчанию для приложения. Короче говоря, в каждом запущенном приложении запускается новая БД.

E2A

Обратите внимание на dbCreate линии:

создать падение: Создание таблиц при запуске приложения и падает, то при выключение

создания: Создает все таблицы в приложении запуска

обновление: обновляет существующие таблицы (не будет пытаться создать их.)

http://grails.github.io/grails-doc/3.0.x/guide/conf.html

В режиме разработки dbCreate по умолчанию установлено значение «создать падение», но в какой-то момент в развитии (и, конечно же, как только вы идете в производство) вам нужно, чтобы остановить падение и воссоздавая базу данных каждый раз, когда вы запускаете свой сервер, .

+0

Почему таблица удаляется каждый раз, когда я заканчиваю свой сервер в терминале? Это то, как действительно работает граф, или у меня есть что-то для настройки? – Eli

+0

Когда вы завершаете приложение grails. Если ваш источник данных указывает на внутренний db. Если вы не настроили свой собственный db, данные теряются. Посмотрите на установку mysql, а затем, как настроить приложение grails для работы с mysql – Vahid

+0

Я уже настроил свою базу данных с помощью mysql. Пожалуйста, взгляните выше. Я вставил мою конфигурацию базы данных. – Eli

Смежные вопросы