Отображение joinTables в виде списка в Grails - PullRequest
0 голосов
/ 02 июня 2011

У меня есть два класса домена: автомобиль и водитель.Я хотел бы сделать представление gsp, которое отображает информацию об автомобиле и водителе в списке, который выглядит более или менее стандартным списком лесов.Например:

Make  Model  Driver  Age
------------------------
Chevy Nova   Joe     20
Chevy Nova   Mike    30
Chevy Nova   Sally   40 

Вот классы доменов:

class Car {
  String make
  String model

  static constraints = { }
  static hasMany = [ drivers : Driver ]

  static mapping = {
    drivers joinTable: [name: 'Car_Driver', column: 'DRIVER_ID', key: 'CAR_ID']
  }
}

class Driver {
  String name
  int    age

  static constraints = { }  
}

Сделайте машину и дайте ей несколько водителей:

def car = new Car(make: 'Chevy', model: 'Nova')
def driver1 = new Driver(name: 'Joe', age: 20)
def driver2 = new Driver(name: 'Mike', age: 30)
def driver3 = new Driver(name: 'Sally', age: 40)

car.addToDrivers(driver1)
car.addToDrivers(driver2)
car.addToDrivers(driver3)
car.save()

Что мне нужносделать в моем представлении CarController и / или gsp для создания объединенного списка (и все еще работать с разбиением на страницы)?

1 Ответ

1 голос
/ 02 июня 2011

Если Driver может иметь только один Car, вам необходимо Driver для ссылки на Car и просто для визуализации лесов list для Driver.

Чтобы настроить столбцы списка, вам нужно будет grails generate-views.

Если у Driver может быть много Cars, и вы не хотите перетаскивать таблицу Car_Driver в модель видимого домена (у нее нет собственного значения домена), выполните действие list, похожее на леса, с помощью Результат SQL-запроса в виде cardriverInstancesList. Как здесь: Представления SQL / базы данных в Grails .

Просто убедитесь, что result является PagedResultList. Если нет, вы можете создать PagedResultList вручную, он легко состоит из List и totalCount, которые вы можете найти с помощью SQL.

...