【问题标题】:Surrogate Key Generation Across Multiple Tables Using Hibernate使用 Hibernate 跨多个表生成代理键
【发布时间】:2023-03-08 17:34:02
【问题描述】:

我想在 MySQL 中为我的用户表获取代理键。我确信连接一个递增值+一个时间戳会给我跨多个表的唯一键,但是在我将它持久保存到数据库之前,我如何获得类的持久性表的增量值。

【问题讨论】:

    标签: java mysql hibernate timestamp


    【解决方案1】:

    让 hibernate 使用他们的密钥生成器之一为您做这件事。如果您必须定义自己的密钥方案,则必须编写自己的生成器。

    【讨论】:

    • 以毫秒为单位获取当前系统时间然后将其分配为 ID 有什么问题吗?我想要一些比自动递增字段更独特的东西(这是@Generated 标签目前在 MySQL 中给我的东西)。我想要在多个表中唯一的键,而不仅仅是一个
    • 是的,因为根据您的数据库的 CURRENT_TIMESTAMP 的分辨率,您可能会同时插入两个对象。你怎么能比自动递增的字段更独特,它已经保证是唯一的?
    • @user398371,我认为 mysql 不可能做到这一点。 Oracle 支持它——我认为您定义了一个序列,然后告诉每个表使用该序列。
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多