【问题标题】:how to generate unique constraint in entity class using jpa project eclipse如何使用jpa项目eclipse在实体类中生成唯一约束
【发布时间】:2018-03-03 13:27:14
【问题描述】:

我打算在我的项目中集成 ORM,所以我使用 eclipse 的 JPA 项目从旧数据库中生成实体类。总共生成了 168 个实体类,这很好。但在nullableunique 等一些约束条件下不会自动生成。

例如我需要这样的东西:-

@Column(name="USER_NAME",unique = true)
private String userName;

但是在自动生成实体之后,代码中没有唯一约束。我怎样才能简单地做到这一点?

任何建议都会很有用。

【问题讨论】:

  • 如果您无法使用 Eclipse 的 JPA 项目来完成这项工作,您可能会考虑尝试使用 Hibernate / JBoss Tools 的逆向工程师。网上有几篇文章将带您逐步了解如何执行此操作,例如mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools
  • @Column 注释的unique 属性仅用于 DDL 生成,即在您从映射的 JPA 实体生成数据库模式的情况下。它对代码完全没有影响。当您走相反的方向时,拥有它就没有什么意义了:stackoverflow.com/questions/30460596/…

标签: java eclipse jpa entity


【解决方案1】:

在 Eclipse 中检查您的 JPA 版本,如果您发现最低版本,请将其更新为最新版本。最新的 JPA 创建了我们在数据库表中定义的所有约束。
希望这对你有帮助。

【讨论】:

    【解决方案2】:

    @Unique 表示唯一索引,可防止索引字段中出现重复值。 如果不同实体在唯一字段中具有相同的值(类似于主键的行为方式),则在提交(或刷新)时引发 PersistenceException。 在你的例子中:

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

    【讨论】:

    • 这不回答问题。
    【解决方案3】:

    只有在创建表时才会创建唯一约束。如果表已经存在,则在 DDL 更新期间将仅添加新列。因此,您必须手动删除表或将javax.persistence.schema-generation.database.action 的值设置为drop-and-create

    【讨论】:

    • 这也不回答问题。
    【解决方案4】:

    你必须使用 Jboss 的 Hibernate Tools,它可以让你做更好的逆向工程。

    http://hibernate.org/tools/

    外面有一堆教程在解释如何使用休眠工具。

    【讨论】:

      猜你喜欢
      • 2011-06-08
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      相关资源
      最近更新 更多