今天早上刚刚测试我的代码,发现我似乎无法解决的问题。
我的SKU类具有一个自定义ID生成器(已声明)以采用字符串:
static mapping = {
id generator: 'assigned', name: 'sku'
}
我创建了一个SKU对象,其ID为:“ 1234445 ”(通常,我的SKU ID是破折号和数字的组合,但出于测试目的,我使用数字作为字符串)现在,每当我尝试执行SKU.get(“ 1234445 ”)时,都会出现以下错误:
Provided id of the wrong type
Expected: class java.lang.String, got class java.lang.Long
显然,我提供了一个String,执行.get时,它会以某种方式将其视为Long,因此会导致错误。
除了不使用看起来像SKU.id的数字(在我的情况下为Sku.sku)之外的字符串之外,有关如何解决此问题的任何想法?
最佳答案
如果要使用String id
,请使用String sku
而不是SKU.get("123445")
class SKU {
String id
static mapping = {
id generator: 'assigned'
}
}
def newSku = new SKU()
newSku.id = '123445'
newSku.save(flush: true)
println SKU.get("123445")
如果您需要专门使用
sku
作为标识符,请使用SKU.findBySku("123445")
与您现在拥有的映射(如问题中所述)。
关于grails - 尝试获取ID类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069384/