2015-09-25 46 views
0

請您澄清此註釋的實際用途嗎? - 如果我們沒有使用DB中的SQL表定義定義相應的約束,會發生什麼情況。當我們嘗試插入時,hibernate會檢查唯一性嗎?或者這是DB的目的?如果hibernate插入時不檢查是什麼原因背後的指定?如果我們不是從Model類自動生成表定義,那麼這些註釋是否有任何目的?Hibernate @UniqueConstraint目的

+0

我不認爲hibernate會在插入過程中檢查唯一性。這是底層數據庫的職責。可能僅用於自動生成表格。你爲什麼不寫一個測試,看看會發生什麼? – user2953113

+0

我寫過測試並觀察到Hibernate沒有檢查唯一性。我很想知道爲什麼Hibernate不會在插入前發送select查詢來檢查數據是否符合指定的約束條件。 – ashishpinninti

回答

1

javadoc指定:

指定的唯一約束是要被包括在所產生的 DDL爲伯或仲表。

提供的約束將包含在生成的DDL中(這意味着它將被架構生成工具使用)。

1

請您澄清此註釋的實際用途嗎?
@UniqueConstraint屬性是模式生成工具生成相應約束的指令。

如果我們沒有使用DB中的SQL表定義定義相應的約束,會發生什麼情況。當我們嘗試插入時,hibernate會檢查唯一性嗎?
不,Hibernate不會檢查唯一性。

或者這是DB的目的?
是的,這個目的是在數據庫的幫助下提供的。

如果hibernate插入時不檢查是什麼原因背後指定它?
僅適用於模式生成工具

如果我們不是自動生成來自模型類的表定義,那麼這些註釋是否有任何目的?
除了生成模式之外,它還提供有關唯一性的可讀性。