2016-08-23 4 views
1

Привет У меня есть домен класс User, и я создал сам контроллер для регистрации people.When я запустить проект и введите поля и нажмите клавишу ВВОД, я получаю эту ошибку:Missing таблицы в базе данных

org.springframework.jdbc.BadSqlGrammarException: Hibernate operation: could not extract ResultSet; bad SQL grammar [n/a]; nested exception is 
org.postgresql.util.PSQLException: ERROR: column this_.id does not exist 

Я подключен to postgresql. У меня все остальные классы домена имеют свою собственную таблицу в базе данных, но класс домена не имеет, по моему мнению, причина, по которой я получаю эту ошибку, как ее исправить?

class User { 
    String login 
    String password 
    String name 


    static constraints = { 
     login size: 3..20 , unique: true, nullable: false 
     password size: 3..20, unique: false, nullable: false 
     name size: 3..20, unique: false, nullable: false 
    } 

} 

    class UserController { 
    def scaffold = User 
    def login = {} 
    def authenticate = { 
     def user = User.findByLoginAndPassword(params.login, params.password) 
     if(user){ 
      session.user = user 
      flash.message = "Hello ${user.name}!" 
      redirect(controller:"entry", action:"list") 
     }else{ 
      flash.message = "Sorry, ${params.login}. Please try again." 
      redirect(action:"login") 
     } 
    } 

    def logout = { 
     flash.message = "Goodbye ${session.user.name}" 
     session.user = null 
     redirect(controller:"entry", action:"list") 
    } 
} 

class RegisterUserController { 
def index() { } 
def register(String user,String password,String name) { 
     def user2=new User(login: user,password : password,name: name) 
     if (user2.validate() && user2.save()) { 
      redirect(url: "http://localhost:8080") 
     } else { 
     } 
    } 
} 

Я получаю сообщение об ошибке на: если (user2.validate() & & user2.save())

application.yml файл:

hibernate: 
cache: 
    queries: false 
    use_second_level_cache: true 
    use_query_cache: false 
    region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory 
    dataSource: 
pooled: true 
jmxExport: true 
driverClassName: org.postgresql.Driver 
username: postgres 
password: 
    environments: 
development: 
    dataSource: 
     dbCreate: create-drop 
     url: jdbc:postgresql://localhost:5432/new 
     username: postgres 
     password: 
test: 
    dataSource: 
     dbCreate: update 
     url: jdbc:postgresql://localhost:5432/new 
     username: postgres 
     password: 
production: 
    dataSource: 
     dbCreate: update 
     url: jdbc:postgresql://localhost:5432/new 
     username: postgres 
     password: 
+0

предоставьте данные своего домена. С этой информацией невозможно точно указать причину, по которой происходит исключение. –

+0

И предоставить Config.groovy (или application.yml) plz. – Joch

+0

Возможно, мне нужно что-то изменить в настройках application.yml, чтобы воссоздать каждую новую таблицу классов домена? –

ответ

0

Там нет необходимости call validate(), потому что save() уже вызывает его.

Попробуйте

if (user2.save(flush:true, failOnError: true)) { 
       redirect(url: "http://localhost:8080") 
    } 

С failOnError вы можете быть более уверенным об ошибке.

Также, если это не поможет изменить ваше имя класса «Пользователь» для чего-то еще для ex. «MyUser» Я столкнулся с этой проблемой в postgresql, и изменение названия класса разрешило ее, если я не помню неправильно.

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