List 如何在groovy/grails中获取列表中一个元素的值

List 如何在groovy/grails中获取列表中一个元素的值,list,grails,groovy,criteria,hibernate-criteria,List,Grails,Groovy,Criteria,Hibernate Criteria,在执行createCriteria查询之后,我有一个对象列表,其中只有1个项,其中有7个字符串。我想做的是只得到这七个元素中的一个 List<Object> result - com.test.MyService.getConfig(String, String, String, String, String, String, String) 例如,我希望access仅获取字符串“country”才能在方法中返回它: 我正在尝试这样做: result.get(4) 我犯了一个错误

在执行createCriteria查询之后,我有一个对象列表,其中只有1个项,其中有7个字符串。我想做的是只得到这七个元素中的一个

List<Object> result - com.test.MyService.getConfig(String, String, String, String, String, String, String)
例如,我希望access仅获取字符串“country”才能在方法中返回它:

我正在尝试这样做:

result.get(4)
我犯了一个错误:

java.lang.IndexOutOfBoundsException: Index: 4, Size: 1
试一试

您将获得
java.lang.IndexOutOfBoundsException:Index:4,Size:1
,因为当您执行
YourDomainClass.createCriteria().list{}
时,您将获得YourDomainClass对象的列表(只有一个对象)。因此,如果要使用
YourDomainClass.createCriteria().list{}
,应该执行:

def objects = YourDomainClass.createCriteria().list{}
if(objects) //check if any object is in list
    return objects[0].country
试一试

您将获得
java.lang.IndexOutOfBoundsException:Index:4,Size:1
,因为当您执行
YourDomainClass.createCriteria().list{}
时,您将获得YourDomainClass对象的列表(只有一个对象)。因此,如果要使用
YourDomainClass.createCriteria().list{}
,应该执行:

def objects = YourDomainClass.createCriteria().list{}
if(objects) //check if any object is in list
    return objects[0].country
您可以做的是:

  • 只需执行
    result.first().country
  • 或者,如果您确定条件将始终返回单个结果,则使用
    get
    而不是
    list
  • 如果您只需要一个属性,那么使用投影只获取该属性,而不是整个对象
  • 
    def result=DomainClass.createCriteria().list{//或get
    结果变压器(标准规范。别名到实体映射)
    投影{
    财产(“国家”、“国家”)
    }
    }
    

    在这种情况下,当使用
    .list{}
    获取国家/地区的值时:

  • 使用结果转换器
    返回结果.first().country
  • 没有结果转换器:
    返回result.first()
  • 使用
    .get{}
    而不是
    .list{}
    时:

  • 使用结果转换器
    返回结果。国家/地区
  • 不带结果转换器:
    返回结果
  • 您可以做的是:

  • 只需执行
    result.first().country
  • 或者,如果您确定条件将始终返回单个结果,则使用
    get
    而不是
    list
  • 如果您只需要一个属性,那么使用投影只获取该属性,而不是整个对象
  • 
    def result=DomainClass.createCriteria().list{//或get
    结果变压器(标准规范。别名到实体映射)
    投影{
    财产(“国家”、“国家”)
    }
    }
    

    在这种情况下,当使用
    .list{}
    获取国家/地区的值时:

  • 使用结果转换器
    返回结果.first().country
  • 没有结果转换器:
    返回result.first()
  • 使用
    .get{}
    而不是
    .list{}
    时:

  • 使用结果转换器
    返回结果。国家/地区
  • 不带结果转换器:
    返回结果

  • 我无法访问。请更具体地说:您在我的解决方案中遇到了什么样的错误?你两个都试过了吗?我无法访问。请更具体地说:你在我的解决方案中遇到了什么样的错误?你两个都试过了吗?
    def objects = YourDomainClass.createCriteria().list{}
    if(objects) //check if any object is in list
        return objects[0].country