私はこのコードを持っていて、うまくいきます。サブクエリで合計を比較するように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を一時的に宣言する必要があります。前もって感謝します。