Grails: Проекция на множество таблиц?

У меня проблемы с проекцией в Grails. Не могли бы вы помочь мне просмотреть их и предложить решения?

  1. Я хочу запросить данные по многим таблицам, которые имеют взаимосвязь «многие-к-одному» и проекции некоторых свойств в них обоих. Например:

     class Person {
     int id
     Имя строки
     Адрес строки
     static hasMany = [cars: Car]
    }
    
    class Car {
     int id
     Марка струны
     длинная цена
     Владелец лица
     static ownTo = [владелец: человек]
    }
    

    Итак, как я могу использовать только один запрос withCriteria (применить проекцию), чтобы получить информацию об указанном автомобиле (включая марку, цену и имя владельца)? Можно ли использовать:

     Car.withCriteria {
     projection {
     свойство («бренд»)
     недвижимость ("цена")
     свойство ("owner.name")
     }
     eq ("идентификатор", carId)
    }
    
  2. Могу ли я использовать проекцию, чтобы получить информацию об одном указанном человеке вместе с названиями всех его автомобилей? Например: [01, Perter, 01 Street A, [Mercedes, Toyota, Ducatti]]?

  3. Особая ситуация: (с классом выше Person)
    Человек может присоединиться ко многим организациям, и у организации может быть одна «родительская» организация (и наоборот, у организации может быть много других зависимых организаций). Но есть правило: человек может вступить только в одну дочернюю организацию данной организации. Итак, с данной организацией O и человеком P, каков самый быстрый способ получить информацию о P вместе с названием зависимой организации от O, членом которой является P. Я предпочитаю использовать проекцию Grails.

    Вот модель данных:

     class Person {
     int id
     Имя строки
     Адрес строки
     static hasMany = [connectedOrgs: Организация] 
    }
    
    class Organization {
     int id
     Имя строки
     Организация parentOrg
     static hasMany = [участники: человек, childOrgs: организация]
    }
    

Я новичок в Grails, и мне бы хотелось больше разбираться в GORM. Большое спасибо за вашу помощь.

8
задан zwol 25 April 2011 в 00:10
поделиться