2

約 20 のプロパティを持つドメイン クラスがあります。ドメイン クラスで findBy を実行すると、データベースから選択されたすべての列を含む選択クエリが生成されます。これは、必要な列が 1 つしかない場合にパフォーマンスが低下する可能性があります。

そこで、withCriteria を使用することを考えました。

def sampleDomainInst = SampleDomain.withCriteria{
    projections {
        property('fieldOne')
       }
     eq('id', idVal)
  } 

返される値はリストです。SampleDomainしかし、必要なのはHow do I do that?のインスタンスです。

ありがとうございました。よろしく、 ジェイ・チャンドラン

4

3 に答える 3

0

プロジェクションの目標は、ドメイン インスタンスが返されないようにすることです。理論的には、プロジェクション クロージャに「id」を追加すると、DomainClass.get(id) を実行できます。しかし、それは投影なしで完全に作業することと同じです。

ドメイン クラスに非常に多くのプロパティがあり、プロジェクションを使用してそれらの一部のみを取得している場合は、ドメイン クラスを複数の結合されたクラスに分割することを検討する必要があります。各クラスは 1 つの抽象化のみを表すようにすることをお勧めします。

于 2010-12-15T13:13:33.163 に答える
0

withCriteria(uniqueResult: true) {...}または、もう少し長くしてみてくださいSampleDomain.createCriteria().get {...}

OTOH、SampleDomainオブジェクト全体を選択している場合、どのようにして1列のみを選択できますか(そのプロパティのほとんどが遅延フェッチされていない限り)? それは不明確に聞こえます。

// そして、1 つのレコードに対して 20 のフィールドを選択するよりも多くのパフォーマンス ヒットが得られると思います。

于 2010-12-15T13:19:24.413 に答える
0
def whatYouWant = sampleDomainInst[0] 

私が何かを見逃していない限り。

于 2011-06-14T01:23:00.100 に答える