我是 Grails 的新手,想要一个 id 列作为带有 n 个摘要的 uuid。像:
class Book {
String id
}
我该怎么做?
您可以使用以下内容:
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 是摘要的数量。