我刚刚在用户表中添加了一个新的时区列,现在我需要为所有现有记录填充它。
这些值应该根据同一表格中的另一列计算出来。
转换由名为OpenCage的地理服务完成。
所以我想创建一个新的Flyway迁移
地理服务是我的应用程序中的SpringBoot@Service
,所以在迁移类中,我需要@Autow的
它。
而且我认为这种迁移需要在应用程序启动后立即自动运行,而不是使用Commmandflyway:迁移
。
我当前的实现如下所示,问题是它不会在应用程序启动后运行。
public class V151__CalculateTimeZoneForExistingUsers extends BaseJavaMigration {
@Autowired
private GeocodingService geocodingService;
public void migrate(Context context) throws Exception {
try (Statement select = context.getConnection().createStatement()) {
try (ResultSet rows = select.executeQuery("SELECT id, postal_code FROM user")) {
while (rows.next()) {
long id = rows.getLong(1);
String postalCode = rows.getString(2);
JOpenCageResult jOpenCageResult = geocodingService.geocode(postalCode);
if (jOpenCageResult != null && jOpenCageResult.getAnnotations() != null && jOpenCageResult.getAnnotations().getTimeZone() != null) {
String timeZone = jOpenCageResult.getAnnotations().getTimeZone().getName();
try (Statement update = context.getConnection().createStatement()) {
update.execute("UPDATE user SET time_zone = '" + timeZone + "' WHERE id=" + id);
}
}
}
}
}
}
}
它位于src\main\java\org\LayerOne\LayerTwo\db\migration\V151\uu CalculateTimeZoneForExistingUsers包中。java
在pom.xml
中,flyway的配置是
<configuration>
<user>username</user>
<password>password</password>
<url>jdbc:mysql://localhost:3306/myDB</url>
<baselineOnMigrate>true</baselineOnMigrate>
<baselineVersion>0.0</baselineVersion>
<locations>
<location>classpath:db/migration, classpath:org/LayerOne/LayerTwo/db/migration</location>
</locations>
</configuration>
使用flyway:info,我可以看到迁移列表。但它不会在应用程序启动后运行。
谁能教我怎么让它运转?
谢啦!
原来我只需要在类中添加Springboot注释@Component
就像
@Component
public class V151__CalculateTimeZoneForExistingUsers extends BaseJavaMigration {
...
}
然后它将在应用程序启动后运行
我有一个带有几个实体类的Spring Boot应用程序,我正在尝试用Flyway实现数据库迁移。在启动时,似乎Spring Boot根本没有运行flyway。 这是我的应用程序.属性 这是我的建筑里的线.Gradle和flyway有关
我想直接从我的应用程序运行另一个应用程序(Polaris Office)。但它也应该直接打开PDF文件。 我尝试了以下代码: 知道我该怎么做吗?我当前的代码给出了错误消息: 原因:java。lang.SecurityException:权限拒绝:启动Intent{act=android.Intent.action.MAIN dat=file:///mnt/sdcard/pdf.pdftyp=app
主要问题--这看起来像是一个基本的flyway问题,我可能(不知为什么)在我的研究中错过了这个问题,但是--当尝试使用flyway迁移数据时,是否可以访问applications services(spring配置的)?下面的一些细节- 其他详细信息- 我知道我们不能注入spring数据服务等(从这个SO问题中了解到)。我从数据访问的角度理解了这一点。 但是在使用flyway时,我们是否可以不使用
Updtaed MainActivity.cs 提前谢了。
我想让我的Flutter应用程序总是在后台运行。在android中,我们必须创建一个始终在后台运行的服务。我在Flutter文档中找不到关于服务的东西。 有可能用Flutter做这种事情吗?
正如标题所示,我正在寻找任何可以帮助我在Springs应用程序上下文(准确地说是持久性上下文)加载之前运行Flyway迁移的方法。原因是我在应用程序启动时运行的查询很少。这导致我的测试失败,因为正在对尚不存在的数据库表执行查询。我使用H2作为我的测试数据库。现在我只使用flyway核心依赖: 我有一个单一的Flyway配置类,如下所示: 并且属性在 我想实现的是:1.飞行路线做迁移2。Spring