在我的spring应用程序中,我使用Entity类创建了许多表,并且它运行良好。我使用Spring和Hibernate,数据库是PostgreSQL。
然后我需要一些函数,所以我准备一个包含函数代码的SQL脚本。该脚本在pgAdmin以及netbeans数据库服务sql窗口中执行。
但是如果我想在hibernate生成所有表之后运行脚本,则无法执行。 为此,我在ApplicationContext.java中创建了Beans
@Bean
public DataSourceInitializer dataSourceInitializer() {
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource());
initializer.setDatabasePopulator(databasePopulator());
return initializer;
}
private DatabasePopulator databasePopulator() {
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.addScript(schemaScript);
return populator;
}
我收到的错误是
Caused by: org.postgresql.util.PSQLException: Unterminated dollar quote started at position 122 in SQL CREATE OR REPLACE FUNCTION public.populate_raw_data( source character varying, func character varying) RETURNS integer AS $BODY$ DECLARE cnt integer. Expected terminating $$
我已经在SO中阅读了几个问题,但到目前为止还没有任何帮助。 pom.xml中的postgresql驱动程序是版本42.2.1