Grails 2.1 Как я могу добавить значение в таблице соединений

Я создаю 2 таблицы: "Категория" и "Один производитель", и там есть отношение "многие ко многим". Поэтому я использую таблицу соединений и вставляю значения в две таблицы по отдельности. Теперь я хочу соединить две таблицы по их идентификатору, но я не могу сделать это. Можете ли вы мне помочь... Когда я пытаюсь вставить значение в таблицу соединений, выдается исключение, вот исключение:

    Cannot invoke method addToManufacturers() on null object. Stacktrace follows:
java.lang.NullPointerException: Cannot invoke method addToManufacturers() on null object

вот мой класс домена для категории

static hasMany    =  [manufacturers: Manufacturer]

static constraints = {
    name     blank: false, size: 0..60, unique: false
}

static mapping = {
    table 't01i001'
    id      column: 'f_category_id'
    name    column: 'f_name', length: 30     
    version column: 'f_revision'

    manufacturers joinTable: [name: 't01j001', key: 'k_category_id', column: 'k_manufacturer_id']
}

вот мой класс домена для производителя

static belongsTo  =  Category 
static hasMany    =  [categories: Category]

static constraints = {
    name     blank: false, size: 0..60, unique: false
}

static mapping = {
    table 't01i002'
    id        column: 'f_manufacturer_id'
    name      column: 'f_name',         length: 30
    version   column: 'f_revision'

    categories joinTable: [name: 't01j001', key: 'k_manufacturer_id', column: 'k_category_id']
}

добавить мой контроллер, где я пытаюсь вставить

def manuInsertInCat(){
    def message, flag,count=0,categories = []
    int  catid  = params.containsKey("catid") ? params.catid : '0' 
    int  manuid = params.containsKey("manuid") ? params.manuid : '0' 
    def category    = Category.get(catid);
    def manufacture = Manufacturer.get(manuid)
    category.addToManufacturers(manufacture)
    message = "Successfully Loaded"
    count++
    flag =true
    render Category.getJsonData(categories, count, flag, message)        
}

1 ответ

Решение

Наконец я завершаю свою работу этим процессом, он работает отлично.

def catInsertInManu(){
    def message, flag,count=0,manufacturers = []
    String  catid  = params.containsKey("catid") ? params.catid : '0' 
    String  manuid = params.containsKey("manuid") ? params.manuid : '0' 
    def category    = Category.get(catid)
    def manufacture = Manufacturer.get(manuid)
    manufacture.addToCategories(category)

    def m01i001001s = []
    manufacture.categories.each{ cat ->
        m01i001001s << [id:cat.id, name:cat.name]
    }
    manufacturers << [id: manufacture.id, name:manufacture.name, m01i001001s:m01i001001s]

    message = "Successfully Loaded"
    count++
    flag =true        
    render Manufacturer.getJsonData(manufacturers, count, flag, message)        
}
Другие вопросы по тегам