我在Spring應用程序中使用了hibernate-entitymanager
。我正在升級我的Hibernate版本。縮小到精確版本:當我從4.2.1.Final升級到4.2.2.Final(或任何高於此值)時,我的單元測試啓動並嘗試創建數據庫時出現以下錯誤模式:升級後出現奇怪的自引用約束衝突
2014-03-02 18:02:51,559 ERROR [SchemaExport] [main] HHH000389: Unsuccessful: alter table Incident add constraint FK_d91dua6gkdp1jn826adqss3aq foreign key (uuid) references Incident
2014-03-02 18:02:51,559 ERROR [SchemaExport] [main] Constraint "FK_D91DUA6GKDP1JN826ADQSS3AQ" already exists; SQL statement:
alter table Incident
add constraint FK_d91dua6gkdp1jn826adqss3aq
foreign key (uuid)
references Incident [90045-170]
的錯誤不會阻止系統工作得很好,但顯然我不能去生產,在我的系統,一個討厭的錯誤,並沒有它的解釋。
這看起來很像Incident
表與表本身有外鍵關係,這是絕對不是這種情況。
我會試着在這裏Incident
實體的複製本質:
@Entity
@Audited
@EntityListeners(value = {IncidentIdentifierPrePersistListener.class })
@FilterDefs(...)
@Filters(...)
public class Incident extends SomeBaseClass {
@Id
private String uuid = UUID.randomUUID().toString();
@Column(nullable = false, unique = true)
private long identifier;
... a bunch more fields ...
}
請讓我知道如果我可以提供別的幫助ya'all擺脫這個光。我已經玩了好幾個小時,沒有結果,你的幫助將不勝感激。
因此,您的應用程序確實需要在每次加載時執行模式導出? – gerrytan
不,單元測試(H2內存數據庫)。生產將只使用模式生成來驗證模式,並且我沒有看到任何問題。但單元測試中的錯誤是值得關注的原因。只要我不明白這些錯誤,我也不會認爲生產中什麼都不會出錯。我正在升級Hibernate,這對我來說是一個紅旗。 –
你可以嘗試從uuid中移除'unique = true'嗎?這是多餘的,因爲該領域已經被標記爲「@ Id」,你不覺得嗎? – gerrytan