Java 在Hibernate中不工作的表上执行UniqueConstrait
Hibernate版本是3.x 下表结构如下:Java 在Hibernate中不工作的表上执行UniqueConstrait,java,sql,hibernate,Java,Sql,Hibernate,Hibernate版本是3.x 下表结构如下: firstname | lastname | salary ----------------------------------- firstname | lastname | 100 firstname | lastname | 500 firstname | lastname | 1000 下面是java代码 @Entity @Table(name="TABLE_NAME",schema="SchemaName", uniqueCo
firstname | lastname | salary
-----------------------------------
firstname | lastname | 100
firstname | lastname | 500
firstname | lastname | 1000
下面是java代码
@Entity
@Table(name="TABLE_NAME",schema="SchemaName",
uniqueConstraints={@UniqueConstraint(columnNames={"firstname","lastname"})})
虽然我提到了元组“firstname”和“lastname”的唯一约束,
我仍然能够添加具有相同firstname和lastname值的行
我想,我会得到HibernateException
或其他,我将不被允许添加
多行的firstname和lastname值相同。我没有唯一的约束
在数据库级别创建。它就在代码里
为什么我可以添加重复的行?或者我对唯一约束的理解是错误的?您阅读了吗
这只是在生成的DDL中包含唯一约束的提示。它在运行时不会执行任何操作。基本上,您需要在数据库级别创建约束。谢谢。在我的示例中,我正在执行插入和选择操作(添加到表中并从表中查询)。这些是DML语句。您提到的Java文档更多地讲述了DDL语句。所以,我还是不明白!你得到的不是什么?”@UniqueConstraint'仅用于DDL生成。换句话说,它将向数据库添加唯一约束(如果您选择使用该DDL)。注释在运行时对您没有任何作用。当我需要在DB中显式设置约束时,如果在运行时没有任何作用,那么将该约束放入实体类有什么用?您可以使用实体(自动)创建数据库(DDL脚本),在这种情况下,您需要该信息。