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