1

私はこのコードを持っていて、うまくいきます。サブクエリで合計を比較するようにexecuteQueryを使用する場合、これも可能かどうかを尋ねたいだけです。executeQueryを使用したクエリは、既存のコードよりも高速に処理されると思います。ここに私のコードがあります:

    def availableSched = []
    def tres = TestRoomExamSchedule.getAll()
    tres.each { t ->
        def stres = StudentTestRoomExamSchedule.countByTestRoomExamSchedule(t)
        if (stres < t.testRoom.totalTestStations && t.examSchedule.actualExamDateTime <= new Date()) {
           availableSched.add(t) 
        }
    }        
    return availableSched

これは、次の基準を満たす TestRoomExamScheduleのリストを返します。2)ExamSchedule.actualExamDateTime は <= 現在です。

これらのドメイン クラスがあります。

class TestRoom {

String code
String name
int totalTestStations

static constraints = {
}

static mapping = {
    datasource 'admin'
    table 'testroom'
    code column: 'code'
    name column: 'name'
    totalTestStations column: 'totaltestmach', sqlType: "smallint"
}

TestRoomExamSchedule ドメイン クラス

class TestRoomExamSchedule implements Serializable{

Long testRoomId
ExamSchedule examSchedule
TestRoom testRoom   

static transients = ['testRoom']

static constraints = {
}

static mapping = {
    table 'testroom_examschedule'
    version false
    id generator: 'assigned', composite: ['testingCenterId','examSchedule']
    testRoomId column: 'testingcenter_id'
    examSchedule column: 'examschedule_id'

}

StudentTestRoomExamSchedule ドメイン クラス

class StudentTestRoomExamSchedule implements Serializable {

Student student
TestRoomExamSchedule testRoomExamSchedule

static constraints = {
}

static mapping = {
    table 'person_examschedule'
    version: false
    id composite: ['student', 'testRoomExamSchedule']
    student column: 'person_id'
    columns {
        testingCenterExamSchedule {
         column name: 'testroom_id'
         column name: 'examschedule_id'
        }
    }
}

2 つの異なるデータソースを使用しているため、ドメイン クラスTestRoomExamScheduleでプロパティtestRoomを一時的に宣言する必要があります。前もって感謝します。

4

1 に答える 1

0

2 つの異なるデータ ソースを使用している場合は、おそらく不可能です。

単一のクエリでデータベース間の操作が可能な非常に狭いケースをいくつか想像できます。

于 2012-07-30T12:55:26.103 に答える