【问题标题】:How to search using a domain class instance?如何使用域类实例进行搜索?
【发布时间】:2014-08-01 09:59:34
【问题描述】:

我有一个域类 User,其中包含所有实例,例如

[User : 1, User: 2, User : 3, User:4, User: 5, User: 6, User: 7, ...]

还有一个实例列表userInstanceList,只有几个对象,比如说

[User : 3, User:4]

我的搜索词位于 User : 4 中,也位于 User 中的一些其他对象中。当我使用搜索时

User.search(userInstanceList, searchTerm)

它使用 searchTerm 返回 User 中的所有对象。如何仅在 userInstanceList

中搜索对象

【问题讨论】:

  • 我不确定我是否完全理解 userInstance 在这种情况下应该是什么。您是说 UserInstance 是 User 的子类,还是只是说 userInstance 是一个包含一些特定 User 实例的列表?
  • 这是一个包含特定用户实例的列表

标签: grails grails-searchable searchable-plugin


【解决方案1】:

如果你想将搜索限制在 userInstanceList 中的东西,你应该可以在搜索时只使用in 子句。

User.findAll { 
   searchTerm && id in userInstanceList*.id
}

User.withCriteria {
    searchTerm
    inList id, userInstanceList*.id
}

【讨论】:

  • 我使用 resultListFromSearch.findAll{it.id in userInstance*.id} 来返回一个包含常见对象的列表。
  • 是的,我想过建议这样做,但我假设您出于某种原因实际上想再次查询数据库。从性能的角度来看,显然搜索内存列表是更好的选择。
猜你喜欢
  • 1970-01-01
  • 2018-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多