0

別のドメイン クラスの ID を格納する Logging という名前のドメイン クラスがあります: 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 ドメインから対応する要素を選択する必要があります。
2 つのドメインは直接マッピングされておらず、これらのテーブルを結合できません。さまざまなアプローチを試しましたが、解決策が見つかりません。

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 に答える