Добрый день.
Столкнулся с следующей проблемой: Есть 4 Domain class'a
Employee:
package personnel_grails
class Employee {
String name
String surname
String patronymic
Status status
Positions positions
static constraints = {
surname(maxLenght: 40, blank: false)
name(maxLenght: 40, blank: false)
patronymic(maxLenght: 40, blank: false)
status(nullable: false)
positions(nullable: false)
}
String toString(){
"${this.surname} ${this.name} ${this.patronymic}"
}
}
Positions:
package personnel_grails
class Positions {
String positions
static constraints = {
}
String toString(){
"${this.positions}"
}
}
Status
package personnel_grails
class Status {
String status
static constraints = {
}
String toString(){
"${this.status}"
}
}
Statistic:
package personnel_grails
class Statistic {
Employee employee
Positions positions
Status status
Date date = new Date()
static constraints = {
}
}
Необходимо чтобы при добавлении/изменении таблицы employee добавлялась соттветствующая запись в таблицу Statistic
Пока сделал так (в контроллере employee):
def save = {
def employeeInstance = new Employee(params)
if (employeeInstance.save(flush: true)) {
def statisticInstance = new Statistic()
statisticInstance.employee = Employee.findById(employeeInstance.id)
statisticInstance.positions = Positions.findById(params.positions.id)
statisticInstance.status = Status.findById(params.status.id)
statisticInstance.save()
.....
}
Но это далеко не самое оптимальнное решение (лишних 4 запроса к БД).
Как можно оптимизировать?