使用带有对象 ID 列表的动态查找器
Use dynamic finders with list of Object IDs
使用给定的 class 结构
class MyObject {
Status status;
}
class Status {
Integer id;
}
我想使用动态查找器根据状态 ID 值列表进行查询。我想做的是这样的
MyObject.findAllByStatusInList([1,2,3]);
虽然这不起作用,因为我的列表需要 Status
个对象。我知道我可以建立一个标准来做到这一点,但我只想知道是否有办法用动态查找器来完成这个?
您可以使用 where 子句:
MyObject.where {status.id in [1,2,3]}.find()
UPD
动态查找器不支持别名,因此 Criteria(或 DetachedCriteria)是要使用的解决方案。
如果 Status class 是域实体,您可以从数据库中检索它们的列表(或加载它们的代理),然后查询 MyObjects 按状态列表。
所以除了在你的情况下使用 Criteria,我看不出其他合适的解决方案。
您仍然可以使用动态查找器完成此操作。
def statuses = [1, 2, 3].collect { Status.load(it) }
MyObject.findAllByStatusInList(statuses)
load()
将为您创建一个代理,只要您不访问除 id
.
以外的任何属性,就不需要从数据库中检索实例
你可以用这个。
List
<
Integer > statuses = [1, 2, 3]
MyObject.findAllByStatusInList(statuses)
使用给定的 class 结构
class MyObject {
Status status;
}
class Status {
Integer id;
}
我想使用动态查找器根据状态 ID 值列表进行查询。我想做的是这样的
MyObject.findAllByStatusInList([1,2,3]);
虽然这不起作用,因为我的列表需要 Status
个对象。我知道我可以建立一个标准来做到这一点,但我只想知道是否有办法用动态查找器来完成这个?
您可以使用 where 子句:
MyObject.where {status.id in [1,2,3]}.find()
UPD
动态查找器不支持别名,因此 Criteria(或 DetachedCriteria)是要使用的解决方案。
如果 Status class 是域实体,您可以从数据库中检索它们的列表(或加载它们的代理),然后查询 MyObjects 按状态列表。
所以除了在你的情况下使用 Criteria,我看不出其他合适的解决方案。
您仍然可以使用动态查找器完成此操作。
def statuses = [1, 2, 3].collect { Status.load(it) }
MyObject.findAllByStatusInList(statuses)
load()
将为您创建一个代理,只要您不访问除 id
.
你可以用这个。
List
<
Integer > statuses = [1, 2, 3]
MyObject.findAllByStatusInList(statuses)