0
我有一些類,像這樣關聯的類型的所有實例:找到與其他類型
class User {
boolean enabled
String username
}
class ExampleClass {
User firstUser
User secondUser
}
我的最終目標是要找到其中enabled == true
OR的User
實例與ExampleClass
相關的User
所有實例。
代碼在哪裏運行我無權訪問變量名稱firstUser
或secondUser
。
雖這麼說,我需要能夠找到與ExampleClass
相關聯的所有User
例如,哪個變量(firstUser
或secondUser
)的關聯已建立通過直索。我該怎麼做?
UPDATE:
我能想出的最好的是在我的User
域類此方法。我給我上面的例子,我有一個ExampleClass
其中有User
類型的多個字段。事實上,我有User
類型的多個字段的多個類。這就是爲什麼我從傳入的對象中獲取域類,而不是僅鍵入ExampleClass
。
static List findAllEnabledOrAssociatedWith(Object obj = null) {
if(obj?.id) { // Make sure the object in question has been saved to database.
List list = []
obj.domainClass.getPersistentProperties().each {
if(it.getReferencedPropertyType() == User) {
def propertyName = it.getName()
list += User.executeQuery("SELECT DISTINCT ${propertyName} FROM ${obj.class.getSimpleName()} obj INNER JOIN obj.${propertyName} ${propertyName} WHERE obj =:obj", [ obj: obj ])
}
}
list.unique()
return User.executeQuery("SELECT DISTINCT users FROM User users WHERE users.enabled=true OR users IN(:list)", [ list: list ])
} else {
return User.executeQuery("SELECT DISTINCT users FROM User users WHERE users.enabled=true")
}
}
「如果這個代碼運行,我沒有訪問變量名'firstUser'或'secondUser'。」 < - 引用 – ubiquibacon