我正在尝试从数据库中的User对象构建按字母顺序排序的用户名列表。我发现list()的所有不同方式只返回整个User对象。我只需要他们的用户名,这是每个用户的属性。我需要将此列表提供给g:在我的gsp上选择下拉列表。似乎无法将代码放在一起。我使用的是Mongodb,但我知道这并不重要。这是我的算法。
遍历用户集合并获取每个用户名称。 将所有用户名收集到列表中,然后按字母顺序对其进行排序 将它提供给g:选择列表
可能像
list userList = User.list()
list usernameList
usernameList << a groovy loop to collect it.username(s)
然后按字母顺序对usernameList进行排序,然后将其提供给g:select。
答案 0 :(得分:2)
您可以(并且应该)创建自定义查询,只需创建一个hql查询然后使用executeQuery方法:
http://grails.org/doc/2.3.7/ref/Domain%20Classes/executeQuery.html
User.executeQuery("SELECT username FROM User u order by u.username asc")
答案 1 :(得分:1)
好的,这是一种较短的方式userlist = User.list().collect{it.username}.sort(java.text.Collator.instance)
答案 2 :(得分:1)
这是我的解决方案
def usersList = User.list().username.sort()
答案 3 :(得分:0)
这是一种可能的方法:
userlist = User.list()
def userlist2 = []
userlist.each { userlist2 << it.username }
userlist2.sort()
userlist = userlist2
现在用户列表已准备就绪,因为您需要将其输入g:select