В моем текущем приложении Spring-загрузки я пытаюсь использовать hibernate для доступа к базе данных HSQLDB. У меня есть этот класс конфигурации для спящего режима:Невозможно получить доступ к базе данных HSQLDB в приложении весенней загрузки с использованием Hibernate
@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);
но никакие данные не вставляются в базу данных (при попытке входа в приложение, я получаю сообщение «пользователь не найден»
. ?. Что я делаю неправильно здесь
Почему вы вручную конф ваш источник данных? Вы должны просто указать свойства источника данных в своем приложении application.yml и позволить Spring Boot настроить его для вас (http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties). –