grails findAll 标签

发布于 2024-09-07 19:39:45 字数 240 浏览 4 评论 0原文

如何在 grails findAll 标记中使用“从用户中选择 id、名称、部分、描述”。

我尝试

 User.findAll("SELECT id, name, part, description FROM user") 

使用

User.findAll("FROM user")

“但是显示错误”。
标签是什么?

How to use "SELECT id, name, part, description FROM user " in grails findAll tag.

I tried

 User.findAll("SELECT id, name, part, description FROM user") 

instead using

User.findAll("FROM user")

But shows errors.
What is the tag?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

南巷近海 2024-09-14 19:39:45

finadAll() 返回域对象的 Collection,因此枚举列进行选择没有意义;它理解的查询不是真正的 SQL,并且基本上仅包含 WHERE 子句。由于您似乎不想约束结果集,这可能就是您所需要的:

User.findAll()

它将返回所有 User 对象的集合。如果您需要约束,语法就是

User.findAll("from User as u where u.id=?", [userId])

或者,甚至更简单,您可以使用 动态查找器

User.findAllById(userId);

finadAll() returns a Collection of domain objects, so enumerating columns to select does not make sense; the queries it understands are not real SQL, and consist basically only of WHERE clauses. Since you don't seem to want to constrain the result set, this is probably all you need:

User.findAll()

It will return a collection of all User objects. If you need constraints, the syntax ist

User.findAll("from User as u where u.id=?", [userId])

Or, even simpler, you can use a dynamic finder:

User.findAllById(userId);
樱桃奶球 2024-09-14 19:39:45

如果要运行这样的报告样式查询,请使用executeQuery方法:

def rows = User.executeQuery("SELECT id, name, part, description FROM User")

返回值将是一个Object[]列表,其中对象数组中的每个元素都是列的类型,即第一个元素将是一个long 、第二个字符串等。

请注意,User 必须大写,因为您指的是 Hibernate 实体 - 这不是 SQL 查询,而是 HQL。

If you want to run report-style queries like this, use the executeQuery method:

def rows = User.executeQuery("SELECT id, name, part, description FROM User")

The return value will be a List of Object[] where each element in the object array is the type of the column, i.e. the 1st element will be a long, 2nd a String, etc.

Note that User has to be capitalized since you're referring to the Hibernate entity - this isn't a SQL query, it's HQL.

各自安好 2024-09-14 19:39:45

如果您只想查询某些字段,可以使用带有投影的条件查询。

示例:

def userProperties = User.withCriteria {
    projections {
        property('id')
        property('name')
        property('part')
        property('description')
    }
}

此查询将为每个匹配行返回一个字符串数组(或数据库列类型映射到的任何内容),而不是域对象。

If you want to query for only certain fields, you can use a criteria query with a projection.

Example:

def userProperties = User.withCriteria {
    projections {
        property('id')
        property('name')
        property('part')
        property('description')
    }
}

This query will return an array of Strings (or whatever the database column type is mapped to) for each matching row, instead of a domain object.

白芷 2024-09-14 19:39:45

它将返回一个对象的 ArrayList,您只需访问该对象的值即可。例如:

def result = Code.findAll("from Code as c where c.user_code=?",[pass])
result[0].user_code

我的 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
    }
}

It will return an ArrayList of objects you only have to access that objects values. For example:

def result = Code.findAll("from Code as c where c.user_code=?",[pass])
result[0].user_code

Where my Code class is something like this:

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
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文