2016-04-21 72 views
0

我有一个实体:Liquibase - 春数据:自实体OneToOne关系不起作用

@Entity 
@Table(name = "society") 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
public class Society implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @NotNull 
    @Column(name = "name", nullable = false) 
    private String name; 

我想添加一个引用自我,是这样的:

@OneToOne 
private Society parentSociety 

当我运行liquibase:diff,liquibase没有注意到这个变化,也没有为我的实体的这个新属性创建一个changelog文件。

我该怎么做才能做到这一点?

+0

如何运行liquibase:diff,您是否使用liquibase-hibernate扩展? – dbf

+0

我只是从Maven运行liquibase:diff。我不知道liquibase-hibernate扩展 – user1260928

回答

0

liquibase:diff命令生成两个指定数据库之间的差异。您可以配置数据库与实体之间的生成差异,但首先需要配置pom.xml和liquibase.properties。 对于pom配置,您需要liquibase-hibernate依赖项。我建议您遵循本教程,它非常简单的工作的:

http://www.baeldung.com/liquibase-refactor-schema-of-java-app

当你改变一个实体和运行liquibase:diff命令不remmember的liquibase工作流程:

修改你的JPA实体(添加一个字段,一个关系等)编译你的应用程序(这对编译的Java代码有效,所以不要忘了编译!)运行mvn liquibase:diff(或者mvn编译liquibase:diff以编译之前)在src/main/resources/config/liquibase/changelog目录中创建一个新的“更改日志”查看此更改日志并将其添加到src/main/resour ces/config/liquibase/master.xml文件,所以在下次运行应用程序时应用它如果您使用Gradle而不是Maven,则可以通过运行./gradlew liquibaseDiffChangelog来使用相同的工作流程,并在liquibase中更改数据库配置。如果需要,请填写。

所以,如果你在你需要重新编译实体类的改变后使用maven ...只是执行:全新安装,在这之后,你可以执行liquibase:DIFF为您生成变更liquibase-DIFF .xml文件