我在我的 Spring-Boot 项目中使用 Flyway(在带有 Maven 的 Eclipse 中)
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我遇到了一些有趣的问题。
整个事情运行良好,直到我迁移失败(由于模式语法中的拼写错误)。我尝试运行 Fly:repair 并收到此错误
Failed to execute goal org.flywaydb:flyway-maven-plugin:6.4.1:repair (default-cli) on project springboot: org.flywaydb.core.api.FlywayException: Unable to connect to the database. Configure the url, user and password!
Run Code Online (Sandbox Code Playgroud)
现在,我不明白的奇怪的事情是,如果我将所有信息添加到 pom.xml 中
<properties>
<flyway.user>databaseUser</flyway.user>
<flyway.password>databasePassword</flyway.password>
<flyway.url>urlAddress</flyway.url>
</properties>
Run Code Online (Sandbox Code Playgroud)
它建立了。但是如果我将信息添加到我的 application.properties 文件中
spring.flyway.user=databaseUser
spring.flyway.password=databasePassword
spring.flyway.url=urlAddress
Run Code Online (Sandbox Code Playgroud)
出现相同的错误消息。
根据Baedlung Database Migrations with Flyway(他们使用 Flyway Maven 插件),在哪里配置 Flyway 并不重要。所以我想知道我是否应该切换到flyway-maven-plugin?我真的很想将所有配置都放在 .properties 文件中。
有没有办法根据属性的值将对象列表转换为字符串列表?我有一个实体标签
public class Tag {
private int tagID;
private String description;
}
Run Code Online (Sandbox Code Playgroud)
我得到一个带有 ID 和描述的标签列表:
[Tag [tagID=1, description=121], Tag [tagID=1, description=244], Tag [tagID=1, description=331], Tag [tagID=2, description=244], Tag [tagID=2, description=122]]
Run Code Online (Sandbox Code Playgroud)
我需要的是:
List<String> output = ["121,244,331", "244,122"]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我把这个放在一起:
String description = tags.stream().map(Tag::getDescription).collect(Collectors.joining( ";" ));
Run Code Online (Sandbox Code Playgroud)
输出一个标签的结果
String description = "121,244,331"
Run Code Online (Sandbox Code Playgroud)
当然,我可以通过循环运行它并将结果附加到数组中,但我想知道是否有更优雅的方式 - 甚至是单行?