gpt4 book ai didi

oracle - 如何配置 Grails id 列以在 Oracle 上使用 UUID?

转载 作者:行者123 更新时间:2023-12-04 20:57:27 27 4
gpt4 key购买 nike

我想使用 128 位 UUID而不是 Long对于我所有 Grails 域上的 id 字段。我宁愿不必在每个域上指定所有映射信息。有没有一种简单的方法可以以通用/全局方式实现这一目标?我正在使用 Grails 2.3.x、Hibernate 3.6.10.2 插件、数据库迁移插件 1.3.8 和 Oracle 11g (11.2.0.2.0)。

似乎有很多与此相关的问题,但没有一个提供完整、准确和最新的真正有效的答案。

相关问题

  • What's the best way to define custom id generation as default in Grails?
  • grails using uuid as id and mapping to to binary column
  • Configuring Grails/Hibernate/Postgres for UUID
  • Problems mapping UUID in JPA/hibernate
  • Custom 16 digit ID Generator in Grails Domain
  • 最佳答案

    使用 UUID 和 RAW(16)

    如果您想使用 UUID在您的 Grails 域和 RAW(16) 中在您的数据库中,您需要添加以下内容。

  • 对于每个域,指定 id 字段。这是一个使用 ExampleDomain.groovy 的示例
    class ExampleDomain {
    UUID id
    }
  • 将以下映射添加到 Config.groovy
    grails.gorm.default.mapping = {
    id(generator: "uuid2", type: "uuid-binary", length: 16)
    }

    有关我选择的三个值的详细信息,请参阅这些链接。
  • http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/mapping.html#d0e5294
  • http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-basic-value-uuid
  • How should I store a GUID in Oracle?
  • Datasource.groovy 中的数据源条目添加自定义方言.如果您使用的是 Hibernate 4.0.0.CR5 或更高版本,则可以跳过此步骤。
    dataSource {
    // Other configuration values removed for brevity
    dialect = com.example.hibernate.dialect.BinaryAwareOracle10gDialect
    }
  • 实现您在第 3 步中引用的自定义方言。这是BinaryAwareOracle10gDialect用Java实现。如果您使用的是 Hibernate 4.0.0.CR5 或更高版本,则可以跳过此步骤。
    package com.example.hibernate.dialect;

    import java.sql.Types;
    import org.hibernate.dialect.Oracle10gDialect;

    public class BinaryAwareOracle10gDialect extends Oracle10gDialect {
    @Override
    protected void registerLargeObjectTypeMappings() {
    super.registerLargeObjectTypeMappings();
    registerColumnType(Types.BINARY, 2000, "raw($l)");
    registerColumnType(Types.BINARY, "long raw");
    }
    }

    有关此更改的更多信息,请参阅相关的 Hibernate 缺陷 https://hibernate.atlassian.net/browse/HHH-6188 .

  • 使用 UUID 和 VARCHAR2(36)

    如果您想使用 UUID在您的 Grails 域和 VARCHAR2(36) 中在您的数据库中,您需要添加以下内容。
  • 对于每个域,指定 id 字段。这是一个使用 ExampleDomain.groovy 的示例.
    class ExampleDomain {
    UUID id
    }
  • 将以下映射添加到 Config.groovy
    grails.gorm.default.mapping = {
    id(generator: "uuid2", type: "uuid-char", length: 36)
    }

    有关这三个值的详细信息,请参阅上一节第 2 步中的链接。
  • 关于oracle - 如何配置 Grails id 列以在 Oracle 上使用 UUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205026/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com