我正在使用h2 db进行测试,我正在使用hibernate自动创建表,但希望flyway在数据库中插入脚本。所以,我的flyway没有创建脚本。
首先,我不确定这是否可行。但是当我使用一些插入脚本时,我的测试失败,因为flyway无法插入记录,抱怨该表不存在。
似乎它试图在h2创建表之前运行脚本。
我正在使用弹簧靴来调用飞路。所以,我只需要在类路径中使用此依赖项和db.migaration文件夹来激活flyway:
虽然会很棒。
如果您需要更多信息,请告诉我。
如果我在sql文件中添加各种创建脚本,那么它将正常工作,但我不想编写创建脚本。相反,我想依靠hibernate为我创建它。
由于
答案 0 :(得分:1)
您是否使用Hibernate集成器(org.hibernate.integrator.spi.Integrator)调用flyway?
如果是这样,积分器总是在hibernate schema-export
之前执行正如我所见,改变顺序的唯一方法是添加SessionFactoryObserver然后执行flyway迁移
private final OkHttpClient client = new OkHttpClient();
public void run() throws Exception {
Request request = new Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(response.body().string());
}
答案 1 :(得分:0)
我使用的是Spring Boot,我通过在test .properties中为flyway设置db url来解决它:
Map<Boolean, List<User>> userAgeMap = users.stream()
.collect(Collectors.partitioningBy(user -> user.getAge() > 21, Collectors.toList()));
List<User> userAboveThreshold = userAgeMap.get(Boolean.TRUE);
List<User> userBelowThreshold = userAgeMap.get(Boolean.FALSE);