我正在使用Grails和MongoDB。我有两个域类User和AddWebsite。用户拥有多个网站,每个网站都属于一个用户。 域类如下:
class AddWebsite{
String website
User user
static belongsTo = [user: User]
static constraints = {
website url:true
user nullable:true
}
}
其他域类如下:
class User {
String login
String password
static hasMany = [
addWebsites: AddWebsite
]
static mapping = {
addWebsites cascade:"all-delete-orphan"
}
static constraints = {
}
}
我需要根据当前登录用户查询AddWebsite表并获取该特定用户的网站。有谁能建议任何方法?
答案 0 :(得分:2)
我用这种方法。可能不是最有效但它有效。
def showWebsites(){
def p = User.findByLogin(session["user"].login)
def websites = AddWebsite.findAllByUser(p['_id'])
[websitesList: websites]
}
在我的GSP中,我有:
<g:select name="websiteSelection" from="${websitesList.website} " />
答案 1 :(得分:1)
我还没有使用过MongoDB,但是由于GORM支持它,我假设一个示例查询可以满足您的需求:
AddWebsite.findAllByUser(userObj)
如果您只是想要网站字符串,那么这应该有效:
def userWebsites = AddWebsite.findAllByUser(userObj)*.website
userWebsites将是List<String>
有关详细信息,请参阅http://grails.org/doc/latest/ref/Domain%20Classes/findAllBy.html。
顺便说一下,你不需要&#34;用户用户&#34;在您的AddWebsite类中,因为您已命名&#34; user&#34;在你的belongsTo。答案 2 :(得分:1)
You need to create a createCriteria List as follow
def c = AddWebsite.createCriteria()
def results = c.list {
//find the user based on the relationship
user {
ideq(userobj?.id.toLong())
}
//you can user projection here if u need a single value
}