2015-09-25 35 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插入时不检查是什么原因背后指定它?
仅适用于模式生成工具

如果我们不是自动生成来自模型类的表定义,那么这些注释是否有任何目的?
除了生成模式之外,它还提供有关唯一性的可读性。