如何在grails findAll标签中使用“SELECT id,name,part,description FROM user”。grails findAll标签
我试图
User.findAll("SELECT id, name, part, description FROM user")
而是采用
User.findAll("FROM user")
但显示错误。 任何人都可以建议我的标签
感谢, SRI ..
如何在grails findAll标签中使用“SELECT id,name,part,description FROM user”。grails findAll标签
我试图
User.findAll("SELECT id, name, part, description FROM user")
而是采用
User.findAll("FROM user")
但显示错误。 任何人都可以建议我的标签
感谢, SRI ..
finadAll()
返回域对象的集合,所以列举列可以选择没有意义;它理解的查询不是真正的SQL,基本上只包含WHERE子句。既然你似乎并不想约束的结果集,这可能是你所需要的:
User.findAll()
这将返回所有User
对象的集合。如果你需要约束,语法IST
User.findAll("from User as u where u.id=?", [userId])
甚至更简单,你可以使用a dynamic finder:
User.findAllById(userId);
如果你想运行报告样式的查询像这样,使用executeQuery方法:
def rows = User.executeQuery("SELECT id, name, part, description FROM User")
返回值将是Object []的列表,其中对象数组中的每个元素是列的类型,即第1个元素将是long,第2个String等。
请注意,由于您指的是Hibernate实体,用户必须大写,这不是SQL查询,而是HQL。
如果您只想查询某些字段,则可以使用具有投影的条件查询。
实施例:
def userProperties = User.withCriteria {
projections {
property('id')
property('name')
property('part')
property('description')
}
}
这个查询将返回字符串数组(或任何数据库列类型被映射到)对于每个匹配的行,而不是域对象。
它将返回一个ArrayList对象,您只需访问该对象值即可。例如:
def result = Code.findAll("from Code as c where c.user_code=?",[pass])
result[0].user_code
在哪里我的代码类是这样的:
class Code {
String user_code
boolean flg_active
static constraints = {
user_code nullable:true, blank:true, size:0..Text.MID
flg_active nullable:true, blank:true, default:1
}
}
希望它可以帮助你!
但我们是否有任何显示“SELECT id,name,part,description FROM user”的标签。谢谢 – Srinath 2010-06-30 12:37:30
@Srinath:不,没有那样的问题。这对于一个适用于域对象的框架来说是没有意义的。使用我列出的方法获取User对象然后访问这些对象的属性有什么问题?听起来你以前只用过PHP,现在正在尝试在Grails中编写PHP代码。这不会让你走得很远。 – 2010-06-30 12:54:48
以前我曾在Ruby on Rails工作过。我已经使用了上面提到的标签findAll。我只想知道Grails中是否有这样的标签。感谢您的建议:( – Srinath 2010-06-30 14:48:47