2014-10-29 1 views
0

현재 스프링 - 부트 애플리케이션에서 하이버 네이트를 사용하여 HSQLDB 데이터베이스에 액세스하려고한다. 나는 최대 절전이 구성 클래스가 :하이버 네이트를 사용하는 스프링 - 부트 애플리케이션에서 HSQLDB 데이터베이스에 접근 할 수 없다.

@Configuration 
@EnableTransactionManagement 
@ComponentScan({ "com.spring.app" }) 
public class HibernateConfig { 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 

     sessionFactory.setDataSource(restDataSource()); 
     sessionFactory.setPackagesToScan(new String[] { "com.spring.app.model" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 

     return sessionFactory; 
    } 

    @Bean 
    public DataSource restDataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     String db_url = System.getProperty("user.home")+File.separator+"testedb"; 

     dataSource.setDriverClassName("org.hsqldb.jdbcDriver"); 
     dataSource.setUrl("jdbc:hsqldb:file:"+db_url); 
     dataSource.setUsername("sa"); 
     dataSource.setPassword(""); 

     return dataSource; 
    } 

    @Bean 
    @Autowired 
    public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) { 
     HibernateTransactionManager txManager = new HibernateTransactionManager(); 
     txManager.setSessionFactory(sessionFactory); 
     return txManager; 
    } 

    @Bean 
    public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { 
     return new PersistenceExceptionTranslationPostProcessor(); 
    } 

    Properties hibernateProperties() { 
     return new Properties() { 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 

     { 
      setProperty("hibernate.hbm2ddl.auto", "create"); 
      setProperty("hibernate.hbm2ddl.import_files", "import.sql"); 
      setProperty("hibernate.show_sql", "false"); 
      setProperty("hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 
     } 
     }; 
    } 
} 

하지만 응용 프로그램을 실행할 때, 나는 데이터베이스 스키마를 내 보내야 콘솔에서이 메시지가 표시 :

2014-10-29 09:38:26.251 INFO 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000227: Running hbm2ddl schema export 
2014-10-29 09:38:26.261 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table role_members drop constraint FK_1r16pyyykpv1v6s973ahavdf8 
2014-10-29 09:38:26.261 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : user lacks privilege or object not found: PUBLIC.ROLE_MEMBERS 
2014-10-29 09:38:26.261 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table role_members drop constraint FK_r6a4sbd3nbgk795exs9p5s6sr 
2014-10-29 09:38:26.261 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : user lacks privilege or object not found: PUBLIC.ROLE_MEMBERS 
2014-10-29 09:38:26.262 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table role_permissions drop constraint FK_ipe67mj8dm7kxw2hcdxrixfaa 
2014-10-29 09:38:26.262 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : user lacks privilege or object not found: PUBLIC.ROLE_PERMISSIONS 
2014-10-29 09:38:26.262 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000389: Unsuccessful: alter table role_permissions drop constraint FK_cpxi8h0vi43j90938fdt729p7 
2014-10-29 09:38:26.263 ERROR 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : user lacks privilege or object not found: PUBLIC.ROLE_PERMISSIONS 
2014-10-29 09:38:26.270 INFO 16405 --- [ost-startStop-1] org.hibernate.tool.hbm2ddl.SchemaExport : HHH000230: Schema export complete 

내가 사용하는 시도를 모두 sa 또는 SA 사용자 이름에 대한, 성공하지 않고. 또한, 나는 내 클래스 경로에이 import.sql 파일이 :

INSERT INTO role VALUES (1, 'admin'); 
INSERT INTO permission VALUES (1, 'admin'); 
INSERT INTO role_permissions VALUES (1,1); 
INSERT INTO usuario VALUES (1, 'klebermo', 'pwd', 'Kleber', 'Mota', '[email protected]'); 
INSERT INTO role_members VALUES (1,1); 

하지만 데이터는 데이터베이스 (I 응용 프로그램에 로그인을 시도 할 때, 나는 메시지가 "사용자 없음"에 삽입되고 있지

. ?. 내가 잘못 여기서 뭐하는 거지 내가 보흐 슬라브에 동의

+2

왜 수동입니다 configur 데이터 소스 가져 오기? application.yml에 데이터 소스 속성을 지정하고 Spring Boot가 자동으로 구성하도록해야합니다 (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties).). –

답변

2

을 도움이된다면, 난 그냥 필요한 것은 MySQL의에 대한 액세스를 구성 할 application.properties에 다음을 넣어 :

# 
## Database configuration 
# 
spring.datasource.url: jdbc:mysql://localhost:3306/spring 
spring.datasource.username: spring 
spring.datasource.password: spring 
spring.datasource.driverClassName: com.mysql.jdbc.Driver 

spring.jpa.hibernate.ddl-auto: update 
spring.jpa.database: MYSQL 
#spring.jpa.hibernate.naming_strategy: org.hibernate.cfg.ImprovedNamingStrategy 
#spring.jpa.show-sql: true 
+0

자바 코드로이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. (예 :'db_url = System.getProperty ("user.home") + File.separator + "testedb" ') 데이터베이스의 이름을 –

+1

실제로이 application.yml (또는 .properties)의 시스템 속성을 다음 문법으로 사용할 수 있습니다 :'my.property : $ {user.home} $ {file.separator} testedb ' –

관련 문제