如何在 groovy/grails 中获取列表中的一个元素的值
How to get the value of one element in a List in groovy/grails
执行 createCriteria 查询后,我有一个对象列表,其中只有 1 个项目,里面有 7 个字符串。我想做的是只得到这七种元素中的一种??
List<Object> result - com.test.MyService.getConfig(String, String, String, String, String, String, String)
这是我在列表中得到的元素:
[name:John, surname:John city:Rome, car:BMW, country:Italy, day:Monday, color:Red,]
例如,我只想访问字符串 'country' 以在方法中 return 它:
我正在尝试这样做:
result.get(4)
我遇到了这个错误:
java.lang.IndexOutOfBoundsException: Index: 4, Size: 1
尝试
def oneObject = YourDomainClass.createCriteria().get{
//add your criteria if any
}
return oneObject.country
您得到 java.lang.IndexOutOfBoundsException: Index: 4, Size: 1
,因为当您执行 YourDomainClass.createCriteria().list{}
时,您会得到 YourDomainClass 对象(只有一个对象)的 list。所以如果你想使用 YourDomainClass.createCriteria().list{}
你应该执行:
def objects = YourDomainClass.createCriteria().list{}
if(objects) //check if any object is in list
return objects[0].country
您可以做的是:
- 要么只做
result.first().country
- 或者,如果您确定条件总是 return 单个结果,则使用
get
而不是 list
。
- 如果您只需要一个 属性,则使用投影仅获取 属性 而不是整个对象。
def result = DomainClass.createCriteria().list { //or get
resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
projections {
property("country", "country")
}
}
在这种情况下,当使用 .list{}
获取国家/地区的值时:
- 带有结果转换器
return result.first().country
- 没有结果转换器:
return result.first()
当使用 .get{}
而不是 .list{}
时:
- 带有结果转换器
return result.country
- 没有结果转换器:
return result
执行 createCriteria 查询后,我有一个对象列表,其中只有 1 个项目,里面有 7 个字符串。我想做的是只得到这七种元素中的一种??
List<Object> result - com.test.MyService.getConfig(String, String, String, String, String, String, String)
这是我在列表中得到的元素:
[name:John, surname:John city:Rome, car:BMW, country:Italy, day:Monday, color:Red,]
例如,我只想访问字符串 'country' 以在方法中 return 它:
我正在尝试这样做:
result.get(4)
我遇到了这个错误:
java.lang.IndexOutOfBoundsException: Index: 4, Size: 1
尝试
def oneObject = YourDomainClass.createCriteria().get{
//add your criteria if any
}
return oneObject.country
您得到 java.lang.IndexOutOfBoundsException: Index: 4, Size: 1
,因为当您执行 YourDomainClass.createCriteria().list{}
时,您会得到 YourDomainClass 对象(只有一个对象)的 list。所以如果你想使用 YourDomainClass.createCriteria().list{}
你应该执行:
def objects = YourDomainClass.createCriteria().list{}
if(objects) //check if any object is in list
return objects[0].country
您可以做的是:
- 要么只做
result.first().country
- 或者,如果您确定条件总是 return 单个结果,则使用
get
而不是list
。 - 如果您只需要一个 属性,则使用投影仅获取 属性 而不是整个对象。
def result = DomainClass.createCriteria().list { //or get
resultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP)
projections {
property("country", "country")
}
}
在这种情况下,当使用 .list{}
获取国家/地区的值时:
- 带有结果转换器
return result.first().country
- 没有结果转换器:
return result.first()
当使用 .get{}
而不是 .list{}
时:
- 带有结果转换器
return result.country
- 没有结果转换器:
return result