Сеанс Hibernate не связан с потоком, и конфигурация не позволяет создавать нетранзакционный сеанс здесь - PullRequest
1 голос
/ 10 февраля 2010

В контроллере:

AssocCovList.addAssoc(3, 4)

В домене:

package com.org.domain
class AssocCovList {
    Integer id
    Integer association_id
    Integer cov_list_id
    Date edit_date

    static belongsTo = [association : Association, cov_list : CoverageList]

    static constraints = {
        edit_date(nullable:true )
    }

    static mapping = {
        table 'assoc_cov_list'
        version false
        columns {
        id column : 'ASSOC_COV_LIST_ID'
        association_id column : 'ASSOCIATION_ID'
        cov_list_id column : 'COV_LIST_ID'
        edit_date column : 'EDIT_DATE'
        }
    }


def static addAssoc(3, 4){
   def aclist = new AssocCovList(association_id:3,cov_list_id:4, edit_date:new Date())
   aclist.save()
}


Вот структура sql:

CREATE TABLE omni. assoc_cov_list (
ASSOC_COV_LIST_ID int (11) NOT NULL auto_increment,
ASSOCIATION_ID smallint (6) NOT NULL по умолчанию '0',
COV_LIST_ID int (11) NOT NULL по умолчанию '0',
EDIT_DATE дата по умолчанию NULL,
ПЕРВИЧНЫЙ КЛЮЧ (ASSOC_COV_LIST_ID),
УНИКАЛЬНЫЙ КЛЮЧ ASSOC_COV_LIST_I2 (ASSOCIATION_ID, COV_LIST_ID),
КЛЮЧ ASSOC_COV_LIST_FK1 (COV_LIST_ID),
КЛЮЧ ASSOC_COV_LIST_FK2 (ASSOCIATION_ID)
) ENGINE = InnoDB AUTO_INCREMENT = 9584 CHARSET ПО УМОЛЧАНИЮ = utf8;

Это возвращало No Hibernate Session, привязанный к потоку, и конфигурация не позволяет создавать нетранзакционный сеанс здесь

Почему он возвращает нулевой объект? Я могу обновить и удалить записи. Не работает для новой записи.

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Подождите минутку ... Я думаю, что сам класс домена не является подходящим местом для вызова save () для себя! Это должно быть сделано на уровне контроллера или сервиса. Можете ли вы попробовать это:

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

def static addAssoc(<yourargs>){
    return new AssocList(/*Whatever arguments you pass */)
}

В вашем контроллере:

AssocCovList.addAssoc(<yourargs>).save()    
0 голосов
/ 10 февраля 2010

Вы определили AssocCovList, чтобы иметь следующие свойства:

Integer id
Integer association_id
Integer cov_list_id
Date edit_date

А затем попробуйте создать new AssocCovList(association_id:3), используя только association_id. Однако по умолчанию все свойства являются постоянными и обязательными . Для создания нового AssocCovList вам также необходимо предоставить id, cov_list_id и edit_date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...