首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库上使用Hibernate注释:无法向MySQL表添加约束

问在数据库上使用Hibernate注释:无法向MySQL表添加约束
EN

Stack Overflow用户
提问于 2016-07-20 17:37:55
回答 1查看 98关注 0票数 0

我尝试使用hibernate注释通过数据库向MySQL表添加约束:

代码语言:javascript
复制
package databean;

import javax.persistence.*;

@Entity
@Table(name = "ADMIN",
       uniqueConstraints = {
                @UniqueConstraint(columnNames = "userName"),
                @UniqueConstraint(columnNames = "email")
        })
public class AdminBean {
        // Private fields

        @Id @GeneratedValue
        @Column(name = "adminId")
        private int adminId; // PK

        @Column(name = "userName")
        private String userName;

我还有两个用于映射的xml文件: hibernate.cfg.xml和Admin.hbm.xml

1)映射resource="hibernate/Admin.hbm.xml"/

2)

代码语言:javascript
复制
<hibernate-mapping>
   <class name="databean.AdminBean" table="ADMIN">
      <meta attribute="class-description">
         This class contains the admin detail. 
      </meta>
      <id name="adminId" type="int" column="adminId">
         <generator class="native"/>
      </id>
      <property name="userName" column="userName" type="string"/>
      <property name="firstName" column="firstName" type="string"/>
      <property name="lastName" column="lastName" type="string"/>
      <property name="email" column="email" type="string"/>
      <property name="phone" column="phone" type="string"/>
      <property name="password" column="password" type="string"/>
      <property name="city" column="city" type="string"/>
      <property name="zipCode" column="zipCode" type="string"/>
   </class>
</hibernate-mapping>

根据我在网上的发现:“到目前为止,您已经看到Hibernate如何使用XML映射文件将数据从POJO转换为数据库表,反之亦然。Hibernate注释是在不使用XML文件的情况下定义映射的最新方法。除了或替代XML映射元数据之外,还可以使用注释。Hibernate注释是为对象和关系表映射提供元数据的强大方式。所有元数据都与代码一起被合并到POJO java文件中,这有助于用户在开发期间同时理解表结构和POJO。”(annotations.htm)。

如果我注释掉xml文件的映射,我将得到“未知实体: databean.AdminBean”的例外。现在甚至找不到数据库。

问题:

1)即使xml文件中没有映射,带有hibernate注释的数据库不应该工作吗?(所以它现在甚至不起作用了.)

2)如果没有带数据库的hibernate注释,是否应该将约束直接添加到xml映射文件中?

3)向MySQL表添加约束的最佳方法是什么?由于它们都是在运行应用程序时自动创建的,所以首先在mySQL中手动构建表似乎没有多大意义?

4)是否真的有必要向数据库和(可能) xml文件中添加约束?

更新:

即使我试图在xml文件中设置属性,mySQL数据库似乎也无法“捕获约束”,而且表仍然可以添加重复项。

现在,我怀疑添加这些约束的方式可能不会有问题,但更像是与mySQL表和我的code...though其他部分的“断开连接”可以很好地工作。以前有人遇到过类似的情况吗?

EN

回答 1

Stack Overflow用户

发布于 2016-07-20 23:05:03

我找到了原因:当我的应用程序第一次自动创建时没有添加约束时,我没有删除前一个表。希望没有人犯同样的错误。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38487225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档