0

我有一个名为 Logging 的域类,它存储另一个域类的 id: Organization 提供了两个域的结构:

class Logging {
   Date dateCreated
   long user_id
   long organization_id
   String memberCode

   static constraints = {
      user_id(nullable: false)
      organization_id(nullable: false)
      memberCode(nullable: true)
   }
}

class Organization {
   Type type
   String name
   String memberCode
   User manager
   String collateralAutoEmails
   boolean isBlocked = true

   static constraints = {
      name(blank: false, unique: true)
      manager(nullable: true)
      memberCode(nullable: true)
      collateralAutoEmails(nullable: true)
   }

   static mapping = {
      manager(lazy: false)
   }
}

用户输入几个参数:dateCreated、memberCode 和组织名称。我需要从符合这些条件的 Logging 域中选择所有元素。
对我来说,棘手的部分是编写组织参数名称的查询。根据搜索规则,我应该检查 organization.name 字段是否包含用户作为子字符串输入的数据(不区分大小写),并从 Logging 域中选择相应的元素。
这两个域没有直接映射,我无法加入这些表。我尝试了不同的方法,但仍然没有找到解决方案。

4

2 回答 2

2

干得好

Logging.executeQuery("Select l from Logging l, Organization o where l.organization_id = o.id and o.dateCreated = :dateCreated and o.memberCode = :memberCode and o.name = :name", [dateCreated: dateCreated, memberCode: memberCode, name: name])
于 2013-07-08T01:14:00.147 回答
0

尝试这样的事情:

Organization.executeQuery("select o from Organization o, Logging l where o.name like = :orgName AND o.id=l.organization_id", [orgName : orgName ])

我没试过,如果有效,那么可以在查询中添加更多搜索选项,也可以在参数上添加 %,以增强搜索。

于 2013-07-04T19:05:37.357 回答