У меня следующая проблема - учитывая только фрагмент всей доменной среды, я попытаюсь объяснить это:
У меня есть эти два класса предметной области, и я хочу получить список исследований и отсортировать их по имени своего (текущего) врача. Моя проблема в том, что я не знаю, как выполнить запрос критериев с помощью gorm ...
class Study {
Date studydate
String comment
static belongsTo = [currentPatient:Patient, originalPatient: Patient, originalPhysician: Physician, currentPhysician: Physician]
static mapping = {
columns{
currentPatient column:'id_patient_current'
originalPatient column:'id_patient'
originalPhysician column:'id_physician'
currentPhysician column:'id_physician_current'
}
}
}
class Physician {
String personname
static hasMany = [currentStudies: Study, originalStudies: Study]
static mappedBy = [currentStudies: 'currentPhysician',
originalStudies: 'originalPhysician']
}
и теперь запрос:
def physician = Physician.get(params?.phId)
def studies = Study.withCriteria{
and{
maxResults(limit as Integer)
firstResult(offset as Integer)
currentPhysician{
if(physician){
eq('id', physician.id)
}
order('personname', 'asc')
}
}
}
проблема в том, что не в каждом исследовании должен быть врач - возможно, что столбцы (в базе данных) - "id_physician" и "id_physician_current" - содержат значения NULL (пациент не пришел от врача).
через прямой sql запрос не проблема:
select st.id, ph.personname from study as st left join Physician as ph on ph.ID = st.ID_Physician_Current order by ph.PersonName
Я использую Grails 1.3.7 в базе данных mssql