当前位置: 首页 > 面试题库 >

在grails / hibernate中使用uuid或guid作为id

秦斌
2023-03-14
问题内容

我需要将GUID / UUID作为行的ID列。

这是为了能够在线和离线创建条目,并且合并时当然不会在PK上存在这些冲突。我知道我可以缓解这种情况,但是我想保持简单,并且已有一些遗留应用程序已经在使用uuid
/ guidhtml" target="_blank">定义关系。以后还需要双向同步数据。重写现有应用程序不是一种选择。

当我尝试在grails上使用GUID或UUID时,出现错误500。(在h2上使用GUID会导致另一个错误-如预期的那样,数据库不支持GUID)。

当我尝试保存“ WithUUID”时出现此错误:

URI    /gtestUUID/withUUID/save
Class    java.lang.IllegalArgumentException
Message    argument type mismatch

整个错误500:http:
//imgur.com/m2Udbm6.png

我试过了mariadb 5.5和1.1.7驱动程序,这导致了同样的问题。

Grails 2.3.8。Windows 8.1(x64)。Netbeans 7.4

全部默认。

示例类:

WithUUID.groovy:

package gtestuuid

class WithUUID {
    String name
    static constraints = {
    }
    static mapping = {
        id generator: 'uuid'
    }
}

WithUUIDController.groovy:

package gtestuuid

class WithUUIDController {
    def scaffold = WithUUID
}

任何帮助将不胜感激。

链接到相关的grails文档

(由于我的代表不高,我无法发布指向更多文档/帖子的链接)


问题答案:

您需要将id设置为String或UUID(或任何您需要的值)。

下面是我的类User的另一种可能的示例:

import java.util.UUID

class User {

    String id = UUID.randomUUID().toString()

    static mapping = {
        id generator:'assigned'
    }
}


 类似资料:
  • 问题内容: 如何在独立于平台的Python中创建GUID?我听说有一种在Windows上使用ActivePython的方法,但这仅是Windows,因为它使用COM。有没有使用普通Python的方法? 问题答案: Python 2.5及更高版本中的uuid模块提供了符合RFC的UUID生成。有关详细信息,请参见模块文档和RFC。 文件: Python 2:http://docs.python.or

  • 问题内容: 这是将UUID()生成的MySQL GUID / UUID转换为二进制文件(16)的最佳方法: 然后将其存储在BINARY(16)中 我应该知道以这种方式进行操作有什么影响? 问题答案: 含义不多。它会稍微减慢查询速度,但是您几乎不会注意到它。 无论如何都存储为内部。 如果要将二进制文件加载到客户端中并在客户端进行解析,请注意,它可能具有除initial之外的其他字符串表示形式。 的函

  • 问题内容: 我正在使用mongoose使用Node.js,Express和MongoDB构建CRUD风格的REST服务。此服务将允许已经存在的android应用程序的用户在线上载/同步其单个数据库的内容。 已经存在的应用程序的数据模型使用UUID(用Java生成),该UUID与较短的单调MongoDB样式字段冲突。由于数据模型已经存在,并且填充了许多用户的数据,因此无法将源数据转换为单调的Mong

  • 问题内容: 我需要将.NET中生成的Guid传达给Java应用程序。我曾经以的形式将其存储在磁盘上,然后将其读入Java并将其转换为UUID。为此,我复制了UUID的(私有)构造函数的实现,该实现采用: 但是,当我使用检查UUID时,Java UUID与.NET Guid不同。 例如,.NET Guid 变成Java UUID 看起来前三组的字节顺序是相反的,而后两组的顺序是相同的。 由于我希望G

  • 问题内容: 我正在尝试在JavaScript中创建全局唯一标识符。我不确定所有浏览器上都提供哪些例程,内置随机数生成器的“随机性”和种子状态如何,等等。 GUID / UUID至少应包含32个字符,并且应保持在ASCII范围内,以免在传递它们时遇到麻烦。 问题答案: 根据RFC4122,UUID(通用唯一IDentifier)也称为GUID(全局唯一IDentifier)是具有一定唯一性保证的标识

  • 众所周知,@Pattern注释只能用于CharSequence的实现,例如String。因此,以下对UUID的验证将不起作用。 有没有办法直接在UUID上或基于UUID使用@模式注释。toString()? 实际情况: 当用户输入一个JSON格式的请求正文时,如下所示 它看起来不像正常的UUID。最后一部分应包含12位数字,并且不应有任何大写字母。但是,此类输入将成功转换为UUID为“40336c