INIT = RUNSCRIPT和相对路径的问题

时间:2010-12-20 13:38:06

标签: java hibernate maven-2 configuration h2

我对源路径使用maven约定(src / main src / test),我在src / main / resources / scripts中有我的sql脚本。

我想用H2内存运行我的应用程序,我想使用jdbc url来初始化我的数据库:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

我的问题是这个相对路径(src / main / ...)不起作用,如果init = runscript命令没有任何目标,H2不会崩溃。

有人知道我应该使用什么路径来完成这项工作吗?

由于

2 个答案:

答案 0 :(得分:81)

您可以使用以下网址:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

使用那个可以从classpath运行脚本。所以你可以在你的maven(或其他)项目中添加src / main / resources / scripts或src / test / resources / scripts。

答案 1 :(得分:2)

我建议尝试使用绝对路径作为初学者,只是为了检查一切是否正常。然后,检查您的类路径。例如,bin/main/resources/scripts/create.sql,假设bin是编译类的位置,并且在类路径上。

由于您的源所在的src,通常不在类路径上,这可能是您问题的根源。