gpt4 book ai didi

具有 "First"和 "Last"属性的 Grails 域

转载 作者:行者123 更新时间:2023-12-01 15:24:14 25 4
gpt4 key购买 nike

我最近继承了一个 Grails 代码库,其中包含一个名为 Name 的域类,其中包含属性 firstlast 来表示分别是名称的第一部分和最后一部分。在编写使用此域的单元测试时,由于这些属性的名称与 first 相同,我遇到了一些问题。和 last Grails 中的方法。现在,我可以通过重命名属性来解决问题,但我想知道 Grails 中是否有一种方法可以使用属性名称 firstlast

也就是说,我收到的错误是 No signature of method: com.example.Name.first() is applicable for argument types: () values: []
可能的解决方案:first(), first(java.lang.String), first(java.util.Map), list(), list(java.util.Map), print(java.lang.Object)
当 Grails 尝试对属性应用 nullable: true 约束时。

这是名称的来源:

class Name {
String first
String middle
String last
static belongsTo = [person : Person]

static constraints = {
first(nullable:true)
middle(nullable:true)
last(nullable:true)
}

public static Name findOrCreate(String first, String middle, String last){
def name
name = Name.createCriteria().get{
and{
eq('first', first)
eq('middle', middle)
eq('last', last)
}
if(!name){
name = new Name()
name.first = first
name.middle = middle
name.last = last
}
return name
}

static mapping = {
cache true
}

}

最佳答案

你说这个错误发生在约束 block 中。在这种情况下,您可以使用显式 delegate. 让它工作,即

static constraints = {
delegate.first(nullable:true)
// and similarly for last
}

强制将 first 视为对约束 DSL 的调用,而不是对静态 GORM 方法的调用。

关于具有 "First"和 "Last"属性的 Grails 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com