【问题标题】:Hibernate JPA: unique column with 5 digit integerHibernate JPA:具有 5 位整数的唯一列
【发布时间】:2015-07-10 15:59:24
【问题描述】:

我想有一列是唯一的会员编号。使用 Hibernate/JPA 执行此操作的最佳方法是什么?

生成可用作会员编号的唯一整数组合(例如 10 位)的最佳方法是什么?

EDIT
@Generated(GenerationTime.INSERT)
@Column(insertable = false)
private int membernumber;

【问题讨论】:

    标签: java hibernate jpa orm


    【解决方案1】:

    我对该主题进行了一些研究,发现 JPA 规范允许 @GeneratedValue 用于非 ID 列,但 hibernate 不允许。

    JPA or Hibernate to generate a (non primary key) column value, not starting from 1

    您可以在数据库中使用插入触发器,或者在保存实体之前在您的服务中手动生成它。该链接对此进行了很好的讨论。

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复!您不清楚问题的哪一部分?也许我可以澄清一下,如有必要,您可以优化您的答案。基本上,我有一个存储成员的表。该表有一个主键。但是,我还想为每个成员设置一个唯一的成员编号。有没有办法实现一个计数器或其他东西,从 10000 开始,然后递增?
    • 我想我明白了,我以为您希望每个注册表都有一个唯一的随机值。在这种情况下,您可以在列中使用 @Generated 并将数据库更改为从 10000 开始自动递增该值(对于 Postgres 的序列,对于 MySQL 的 auto_increment)。这是一个很好的例子:concretepage.com/hibernate/example-generated-hibernate
    • 您好!我无法让它工作。查看我的编辑:我收到该列没有默认值的错误。
    • 抱歉很久才回答。您是否在数据库中将该列定义为 auto_increment?
    • 朋友,我编辑了我的答案。只有 OpenJPA 允许我的建议。请看一下答案。
    猜你喜欢
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 2020-09-04
    相关资源
    最近更新 更多