如何在域类中获取n个摘要的Grails UUID?

时间:2013-08-02 19:33:01

标签: grails

我是Grails的新手,并希望将id列作为带有n个摘要的uuid。喜欢:

class Book {
   String id
}

我该如何完成?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

class Book {

  String id

  static constraints = {
    id maxSize: 18
  }

  static mapping = {
    id generator:'assigned'
  }

def beforeValidate() {
    if (!id) {
        String uuid = UUID.randomUUID().toString()
        MessageDigest sha1 = MessageDigest.getInstance("SHA1")
        byte[] digest  = sha1.digest(uuid.getBytes())
        def tmpId = new  BigInteger(1, digest).toString(16)
        id = tmpId[0..n]    // size of the id
    }
}

}

其中n是摘要的数量。