HSQLDB使用JavaConfig处理Spring应用程序的新手。我看不到数据库正在启动?
我是HSQLDB的新手,使用JavaConfig处理Spring应用程序。我看不到数据库正在启动?。。我知道我一定做错了什么 这是我的数据库配置HSQLDB使用JavaConfig处理Spring应用程序的新手。我看不到数据库正在启动?,java,spring,hibernate,hsqldb,Java,Spring,Hibernate,Hsqldb,我是HSQLDB的新手,使用JavaConfig处理Spring应用程序。我看不到数据库正在启动?。。我知道我一定做错了什么 这是我的数据库配置 public class DatabaseConfig { private static final Logger LOGGER = getLogger(DatabaseConfig.class); @Autowired Environment env; @Bean public DataSource d
public class DatabaseConfig
{
private static final Logger LOGGER = getLogger(DatabaseConfig.class);
@Autowired
Environment env;
@Bean
public DataSource dataSource() {
EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.HSQL).
addScript("schema.sql").build();
return db;
}
@Bean
public DataSource hsqlDataSource() {
BasicDataSource ds = new BasicDataSource();
try {
ds.setDriverClassName("org.hsqldb.jdbcDriver");
ds.setUsername("sa");
ds.setPassword("");
ds.setUrl("jdbc:hsqldb:mem:mydb");
}
catch (Exception e)
{
LOGGER.error(e.getMessage());
}
return ds;
}
@Bean
public SessionFactory sessionFactory()
{
LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
factoryBean.setDataSource(hsqlDataSource());
factoryBean.setHibernateProperties(getHibernateProperties());
factoryBean.setPackagesToScan(new String[]{"com.xxx.model"});
try
{
factoryBean.afterPropertiesSet();
} catch (IOException e)
{
LOGGER.error(e.getMessage());
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return factoryBean.getObject();
}
@Bean
public Properties getHibernateProperties()
{
Properties hibernateProperties = new Properties();
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
hibernateProperties.setProperty("hibernate.use_sql_comments", env.getProperty("hibernate.use_sql_comments"));
hibernateProperties.setProperty("hibernate.format_sql", env.getProperty("hibernate.format_sql"));
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
hibernateProperties.setProperty("hibernate.generate_statistics", env.getProperty("hibernate.generate_statistics"));
hibernateProperties.setProperty("javax.persistence.validation.mode", env.getProperty("javax.persistence.validation.mode"));
//Audit History flags
hibernateProperties.setProperty("org.hibernate.envers.store_data_at_delete", env.getProperty("org.hibernate.envers.store_data_at_delete"));
hibernateProperties.setProperty("org.hibernate.envers.global_with_modified_flag", env.getProperty("org.hibernate.envers.global_with_modified_flag"));
return hibernateProperties;
}
@Bean
public HibernateTransactionManager hibernateTransactionManager()
{
HibernateTransactionManager htm = new HibernateTransactionManager();
htm.setSessionFactory(sessionFactory());
htm.afterPropertiesSet();
return htm;
}
}
这是我的主要课程:
public class MainApp
{
private static final Logger LOGGER = getLogger(MainApp.class);
@Autowired
protected static MessageService mService;
public static void main(String[] args)
{
ApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfig.class);
HelloWorld helloWorld = context.getBean(HelloWorld.class);
/**
* Date: 4/26/13 / 9:26 AM
*
* Comments:
*
* I added Log4J to the example.
*/
LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());
Message message = new Message();
message.setMessage(helloWorld.getMessage());
mService.SaveMessage(message);
helloWorld.setMessage("I am in Staten Island, New York");
LOGGER.debug("Message from HelloWorld Bean: " + helloWorld.getMessage());
}
下面是我在尝试将数据保存到数据库时看到的唯一错误。。。我在控制台上看不到任何关于数据库的信息
Message from HelloWorld Bean: I love New York.
Exception in thread "main" java.lang.NullPointerException
您可以从以下站点下载源代码并阅读有关此问题的信息:
是否尝试使用@Component注释对DatabaseConfig进行注释?我现在得到一个java.sql.SQLException:保存对象时不支持此函数DatabaseConfig不应该是@Configuration而不是@Component吗?(假设Spring3和更高版本)请不要执行
catch(异常e){LOGGER.error(e.getMessage());}
这会让您很难找出哪里出了问题@Bean
方法只能重新显示所有异常,因此您的try/catch是不必要的,可能与no重复。这是一个新错误。。所以我不能在同一个网站上发布