grails - 尝试获取ID类型不匹配

标签 grails groovy gorm

今天早上刚刚测试我的代码,发现我似乎无法解决的问题。
我的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/

相关文章:

grails - 使用Grails Fixture插件动态加载子级

inheritance - 从扩展类调用时,groovy 中的闭包不能使用私有(private)字段

grails - “belongsTo”约束与仅在Grails中成为字段之间有什么区别吗?

amazon-web-services - 为什么 grails websockets 连接失败,但在使用 AWS ELB 时继续接收浏览器中已订阅的消息?

grails - 使用抽象域归档域对象

gradle - 为什么在 gradle 任务的名称中可以省略引号

grails - Grails中的自定义联接表

grails - 从每种搜索方法中忽略 “Inactive”条目

grails - 使用动态查找器的并行查询的Grails设计模式

grails - Grails-需要根据联接表上的条件限制提取的行