在“未知”表上执行查询

时间:2013-06-03 11:12:15

标签: grails groovy

如何从类(控制器)执行自定义查询,该类与我想要结果的域类(表)没有任何关系

class something {
 //query select from anything 
}

class anything{
}

我有一个名为Users的域类,它想从另一个conreoller访问它。执行以下内容:

def result = users.executeQuery( "select distinct a.id from users a" );

给我一​​个错误:No such property: Users for class:something

我必须进口任何东西吗?

1 个答案:

答案 0 :(得分:1)

class something {
    def reallyObscureMethodBecauseYourquestionIsreallyNotClear() {
        def someResults = anything.where {
            whateverProperty == 'whatever condition'
        }.list()
        render(view:'someOtherView',model:[crazyunspecificModel:someResults])
    }     

}

class anything{
}

说真的,你可以花更多的精力来构建你的问题,这是我站在哪里的一个懒惰的问题。

<强>更新

所以这可能是你第一次尝试接近JVM的东西,对吗?

如果你想要使用一个类,你需要导入它,如果你的控制器与你的外部类不同。

如果您的用户类(顺便说一下,约定建议使用类的大写名称,以及变量的非大写名称)在com.example.domain包中:

另外,尝试对域类使用单数名称:User,而不是用户。

另外,为什么要使用SQL? grails的一个优点是允许您在更高的抽象级别指定查询。

import com.example.domain.User

class AlienController {
      def list() {
         def result = User.executeQuery( "select distinct a.id from users a" )
      }
}