2017-01-29 3 views
1

最初に:私はたぶん愚かな間違いをしています。.HsqlException:ユーザーに特権がないかオブジェクトが見つかりません

私は古いプロジェクトをSpring XMLからJavaconfigに変換しています。データベースは、メモリ内のHSQLDBデータベースです。残念ながら、それは私にこのエラーを与えている:私のPersistenceConfig.javaと私のSQLスクリプトは、以下

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement 
(stacktrace) 
Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: PUBLIC.T_AUTHORITY 
(stacktrace) 
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: PUBLIC.T_AUTHORITY 

です:

@Configuration 
@EnableTransactionManagement 
@EnableJpaRepositories(basePackages = "org.jason.application.repository.jpa", 
     entityManagerFactoryRef = "entityManagerFactoryBean") 
public class ApplicationPersistenceConfig { 

    @Bean 
    public JpaTransactionManager transactionManager(EntityManagerFactory emf) { 

     JpaTransactionManager jpaTransactionManager = new JpaTransactionManager(); 
     jpaTransactionManager.setEntityManagerFactory(emf); 
     return jpaTransactionManager; 
    } 

    @Bean 
    public LocalContainerEntityManagerFactoryBean getEntityManagerFactoryBean(DataSource dataSource) { 

     LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean(); 

     entityManagerFactory.setPersistenceUnitName("default"); 
     entityManagerFactory.setDataSource(dataSource); 
     entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); 
     entityManagerFactory.setJpaDialect(new HibernateJpaDialect()); 
     entityManagerFactory.setPackagesToScan("org.jason.application.repository.model"); 

     entityManagerFactory.setJpaPropertyMap(hibernateJpaProperties()); 

     return entityManagerFactory; 
    } 

    @Bean 
    public DataSource getDataSource() { 

     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); 
     dataSource.setUrl("jdbc:hsqldb:mem:testdb"); 
     dataSource.setUsername("sa"); 
     dataSource.setPassword(""); 
     return dataSource; 
    } 

    private Map<String, ?> hibernateJpaProperties() { 

     HashMap<String, String> properties = new HashMap<>(); 
     properties.put("hibernate.hbm2ddl.import_files", "insert-data.sql"); 
     properties.put("hibernate.hbm2ddl.auto", "create-drop"); 
     properties.put("hibernate.show_sql", "false"); 
     properties.put("hibernate.format_sql", "false"); 
     properties.put("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy"); 
     properties.put("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
     properties.put("hibernate.c3p0.min_size", "2"); 
     properties.put("hibernate.c3p0.max_size", "5"); 
     properties.put("hibernate.c3p0.timeout", "300"); // 5mins 

     return properties; 
    } 
} 

CREATE TABLE PUBLIC.T_USER (
    USERID INTEGER NOT NULL PRIMARY KEY, 
     USERNAME VARCHAR_IGNORECASE(50) NOT NULL, 
     PASSWORD VARCHAR_IGNORECASE(50) NOT NULL, 
     ENABLED BOOLEAN NOT NULL, 
    CREATE UNIQUE INDEX IX_USERNAME ON T_USER(USERNAME); 

    CREATE TABLE PUBLIC.T_AUTHORITY (
    AUTHORITYID INTEGER NOT NULL PRIMARY KEY, 
    USERID INTEGER NOT NULL, 
--  USERNAME VARCHAR_IGNORECASE(50) NOT NULL, 
     AUTHORITY VARCHAR_IGNORECASE(50) NOT NULL, 
     CONSTRAINT FK_AUTHORITIES_USERS FOREIGN KEY(USERID) REFERENCES USERS(USERID)); 
     CREATE UNIQUE INDEX IX_AUTH_USERNAME ON T_AUTHORITY (USERID,AUTHORITY); 

INSERT INTO T_USER(USERNAME, PASSWORD, ENABLED) VALUES (1, 'jason','password', true); 
INSERT INTO T_AUTHORITY(AUTHORITYID, USERID, AUTHORITY) VALUES (1, 1, "ROLE_ADMIN"); 

は、誰もが私が作った愚かなものは何でも過ち見ることができますか?

Jason

答えて

0

私は思ったように間違っていました。

次の二つの休止状態の特性は、互いに互換性がありません:

properties.put("hibernate.hbm2ddl.import_files", "insert-data.sql"); 
    properties.put("hibernate.hbm2ddl.auto", "create-drop"); 

両方がスキーマを作成する効果を有します。

関連する問題