【问题标题】:Hibernate unique field creationHibernate 独特的字段创建
【发布时间】:2013-11-27 12:09:25
【问题描述】:

我正在尝试在我的一个应用程序域类中添加以下列:

@Column(name="USER_NAME",length=20,nullable=false,unique=true)
private String userName;

我让这个字段唯一的原因是我需要确保每个应用程序用户的用户名都是唯一的。

但每当我尝试加载应用程序时,我都会收到以下错误:

WARN : org.hibernate.util.JDBCExceptionReporter - SQL Error: 1054, SQLState: 42S22
ERROR: org.hibernate.util.JDBCExceptionReporter - Unknown column 'employee0_.USER_NAME' in 'field list'
Nov 27, 2013 12:14:11 PM org.apache.catalina.core.StandardWrapperValve invoke

如果我让 unique = false,一切正常。所以我想知道为什么当我设置 unique = true 时会出现这个错误?以及如何确保用户名字段是唯一的?

感谢您的宝贵时间

【问题讨论】:

  • 您是否验证过有该名称的列?
  • @mabi with unique=true,该列不是在应用程序加载时创建的。使用 unique = false 时,会自动创建该列,没有问题。问题不在于列存在,因为即使您手动创建列,您仍然会收到错误
  • 尝试在getter方法中添加@Column(name="USER_NAME",length=20,nullable=false,unique=true)
  • 您确定您的 hbm2ddl 属性正在创建吗? : 创建

标签: java mysql hibernate


【解决方案1】:

如果您说将 unique 设置为 false 则有效,而将其设置为 true 则失败,这就像在 sql 表的列上创建唯一索引,其中该表在该列中已经没有唯一值,因为在这种情况下,创建该唯一索引将失败。

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 2015-09-07
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多