2017-02-09 4 views
1

私の現在の春/休止中のプロジェクトでは、WEB-INFというファイルにimport.sqlというファイルを追加しましたが、サーバーにデプロイすると、問題なく作成されます。spring/hibernateプロジェクトはデータベースにデータをインポートしません

私の設定:

@Configuration 
@EnableTransactionManagement 
@ComponentScan 
public class HibernateConfig { 

    @Bean 
    public LocalSessionFactoryBean sessionFactory() { 
     LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); 
     sessionFactory.setDataSource(restDataSource()); 
     sessionFactory.setPackagesToScan(new String[] { "org.kleber" }); 
     sessionFactory.setHibernateProperties(hibernateProperties()); 
     return sessionFactory; 
    } 

    @Bean 
    public DataSource restDataSource() { 
     BasicDataSource dataSource = new BasicDataSource(); 
     dataSource.setDriverClassName("org.postgresql.Driver"); 
     dataSource.setUrl("jdbc:postgresql:mydata"); 
     dataSource.setUsername("kleber"); 
     dataSource.setPassword("123"); 
     return dataSource; 
    } 

    @Bean 
    public Properties hibernateProperties() { 
     return new Properties() { 
      private static final long serialVersionUID = 1L; 
      { 
       setProperty("hibernate.hbm2ddl.auto", "create-drop"); 
       setProperty("hibernate.hbm2ddl.import_files", "/WEB-INF/import.sql"); 
       setProperty("hibernate.show_sql", "true"); 
       setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect"); 
      } 
     }; 
    } 

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

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

私import.sqlファイル:

INSERT INTO credencial (nome) VALUES ('categoria'); 
INSERT INTO credencial (nome) VALUES ('produto'); 
INSERT INTO credencial (nome) VALUES ('pagina'); 
INSERT INTO credencial (nome) VALUES ('usuario'); 
INSERT INTO credencial (nome) VALUES ('admin'); 

INSERT INTO autorizacao (nome) VALUES ('insert_categoria'); 
INSERT INTO autorizacao (nome) VALUES ('update_categoria'); 
INSERT INTO autorizacao (nome) VALUES ('delete_categoria'); 

INSERT INTO autorizacao (nome) VALUES ('insert_produto'); 
INSERT INTO autorizacao (nome) VALUES ('update_produto'); 
INSERT INTO autorizacao (nome) VALUES ('delete_produto'); 

INSERT INTO autorizacao (nome) VALUES ('insert_pagina'); 
INSERT INTO autorizacao (nome) VALUES ('update_pagina'); 
INSERT INTO autorizacao (nome) VALUES ('delete_pagina'); 

INSERT INTO autorizacao (nome) VALUES ('insert_usuario'); 
INSERT INTO autorizacao (nome) VALUES ('update_usuario'); 
INSERT INTO autorizacao (nome) VALUES ('delete_usuario'); 

INSERT INTO credencial_autorizacao VALUES (1,1); 
INSERT INTO credencial_autorizacao VALUES (1,2); 
INSERT INTO credencial_autorizacao VALUES (1,3); 

INSERT INTO credencial_autorizacao VALUES (2,4); 
INSERT INTO credencial_autorizacao VALUES (2,5); 
INSERT INTO credencial_autorizacao VALUES (2,6); 

INSERT INTO credencial_autorizacao VALUES (3,7); 
INSERT INTO credencial_autorizacao VALUES (3,8); 
INSERT INTO credencial_autorizacao VALUES (3,9); 

INSERT INTO credencial_autorizacao VALUES (4,10); 
INSERT INTO credencial_autorizacao VALUES (4,11); 
INSERT INTO credencial_autorizacao VALUES (4,12); 

INSERT INTO usuario (login, senha, nome, sobrenome, email) VALUES ('klebermo', '202cb962ac59075b964b07152d234b70', 'kleber', 'mota', '[email protected]'); 

INSERT INTO usuario_credencial VALUES (1,1); 
INSERT INTO usuario_credencial VALUES (1,2); 
INSERT INTO usuario_credencial VALUES (1,3); 
INSERT INTO usuario_credencial VALUES (1,4); 
INSERT INTO usuario_credencial VALUES (1,5); 

誰もが私がここで行方不明です何を私に言うことができますか?

答えて

5

import.sqlはクラスパスのルートにある必要がありますので、\WEB-INF\classesの中に入れてください。

+0

これはビルドプロセス中に実行できますか?基本的にはこのディレクトリに置かれているすべてのものと同じですか? –

+0

はい、あなたの 'src/main/resources'ディレクトリ内に' import.sql'を置いてください。これはクラスパスに自動的に追加されるべきです(プロジェクト構造やビルドプロセスのようなmavenを仮定)。 – Naros

+0

このディレクトリにファイルを置く場合は、configuratonクラス(プロパティ 'hibernate.hbm2ddl.import_files')にそれを指定する必要がありますか?もしそうなら、 '/ src/main/resources/import.sql'というパスを使うことができますか? –

関連する問題