2016-04-21 29 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文件