Использование Postgresql с Grails: отсутствует последовательность или таблица: hibernate_sequence - PullRequest
2 голосов
/ 07 февраля 2012

У меня проблемы с Grails 2.0 и Postgresql 9.1

Я пытаюсь отобразить существующую базу данных с последовательными идентификаторами.Однако даже без создания какого-либо класса в домене у меня возникает ошибка:

Compiling 1 source files.....
| Running Grails application
| Error  executing bootstraps:
      Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; 
      nested exception is org.springframework.beans.factory.BeanCreationException:
      Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory';
      (...)
      Invocation of init method failed; nested exception is org.hibernate.HibernateException:
           Missing sequence or table: hibernate_sequence

Мой источник данных:

dataSource {
    pooled = true
    driverClassName = "org.postgresql.Driver"
    username = "postgres"
    password = "postgrespass"
    dialect = org.hibernate.dialect.PostgreSQLDialect
    logSql = true
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "" 
            url = "jdbc:postgresql://localhost:5432/Rambo"
        }
    }
}

Существующая база данных Tee - это база данных программного обеспечения для покера (Holdemменеджер).Я работал над объектом PlayerHand, который не использует последовательность, но у объекта Player есть таблица последовательности.

Что странно, так это то, что в предыдущей программе мне было довольно легко заставить объект Player работать с Postgresql 8.3 и Grails 2.0.

Ответы [ 2 ]

6 голосов
/ 08 февраля 2012

Вы можете настроить Postgres для использования одной последовательности на таблицу - я описал это здесь: http://grails.1312388.n4.nabble.com/One-hibernate-sequence-is-used-for-all-Postgres-tables-td1351722.html

Но вам все равно нужно будет создать последовательность (и).dbCreate='update' не создает последовательности (только create и create-drop делают), поэтому вам нужно будет создать их вручную или использовать инструмент миграции, например http://www.grails.org/plugin/database-migration

4 голосов
/ 07 февраля 2012

Возможно, у вас есть один из объектов, использующий генератор идентификатора последовательности без какого-либо настроенного имени последовательности, и, таким образом, Hibernate использует имя последовательности по умолчанию: hibernate_sequence, но не находит его.

Настройте имя последовательности (и использовать существующую последовательность), либо создать последовательность hibernate_sequence в базе данных, либо не использовать генератор на основе последовательности.

...