私は5つのテーブルを持っています:
User (Mark)
Enterprise (Google)
EnterpriseUser (Mark, Google)
EnterpriseRight (LOGIN)
EnterpriseUserRight (Mark-Google, LOGIN)
GORM を使用して、Mark (現在のユーザー) が LOGIN 権限を持っているすべての企業のデータベースを照会したいと考えています。次に、結果を並べ替えてページ番号を付けたいと思います。
以前はリストを作成してそれを行っていましたが、ResultSet を返すことを参照します (これはまだ並べ替え/ページ分割/クエリを実行できます)。
私の User.class (ドメイン オブジェクト) の試行 (List<Enterprise> の生成)
public List<Enterprise>getEnterprises() {
def list = new ArrayList<Enterprise>()
for (EnterpriseUser eu: this.enterpriseUsers) {
if (this.hasEnterpriseRights(eu.enterprise, [EnterpriseRight.LOGIN])) {
list.add(eu.enterprise)
}
}
return list
}
(ただし、これらの結果はリストになっているため、並べ替えやページ付けを行うことはできません。このクエリが結果セットを返すことができればいいと思います)
英語で:
このユーザーが文字列名「LOGIN」を持つ、これにEnterprise
関連付けられているすべてを検索します。アルファベット順にリストします。オフセット 10 から 10 個の結果を出してください。User
EnterpriseRight
ここにコードを投稿しますが、どこから始めればよいかわかりません。
ドメイン オブジェクトは次のとおりです。
class User {
static hasMany = [userSystemRights: UserSystemRight, enterpriseUsers: EnterpriseUser]
String email;
String passwordHash;
}
class Enterprise {
static hasMany = [enterpriseUsers: EnterpriseUser, measurements: Measurement]
String name = ""
String tradingName = ""
}
class EnterpriseUser {
static belongsTo = [enterprise: Enterprise, user: User]
static hasMany = [enterpriseUserRights: EnterpriseUserRight]
Enterprise enterprise
User user
String interest
}
class EnterpriseUserRight {
static belongsTo = [enterpriseUser: EnterpriseUser, enterpriseRight: EnterpriseRight]
EnterpriseUser enterpriseUser
EnterpriseRight enterpriseRight
}
class EnterpriseRight {
public static final String LOGIN = "LOGIN"
public static final String MANAGE_USERS = "MANAGE_USERS"
public static final String MANAGE_SETTINGS = "MANAGE_SETTINGS"
static hasMany = [enterpriseUserRights: EnterpriseUserRight]
String name
}