Хобрук: Ваш путь к мастерству в программировании

Сессия Hibernate не привязана к потоку, и конфигурация не позволяет создавать здесь нетранзакционную сессию.

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

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;

В этом случае возвращалось сообщение Нет сеанса гибернации, привязанного к потоку, и конфигурация не позволяет создать здесь нетранзакционный сеанс

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

10.02.2010

Ответы:


1

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

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

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

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

AssocCovList.addAssoc(<yourargs>).save()    
10.02.2010
  • Вам может понадобиться ознакомиться с основами конструкторов Groovy, прочитав groovy.codehaus.org/Groovy+Beans 10.02.2010
  • Хорошая мысль ;-) Спасибо, что освежили мой мозг. Верно ли мое предположение о свойствах, допускающих значение NULL? 10.02.2010
  • Привет всем, Создание не работало только для этого домена, я могу создавать новые записи на других доменах. Не могли бы вы еще раз просмотреть сообщение (я отредактировал код и сообщение об ошибке, которое я получал). @Philippe Филипп - я пытался, например, с вашим, но возникает та же ошибка. Я также могу предоставить больше кода и схемы SQL. заранее спасибо 10.02.2010
  • Смотрите мой новый ответ для другой идеи ... надеюсь, что это правильный, хотя я его не проверял 10.02.2010
  • спасибо за ввод, Филипп - я только что попробовал, но в результате та же ошибка Нет сеанса гибернации, привязанного к потоку, и конфигурация не позволяет создавать здесь нетранзакционный сеанс - мой идентификатор автоматически увеличивается и должен создаваться динамически. 10.02.2010
  • Какую версию Grails вы используете? 15.02.2010

  • 2

    Вы определили 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.

    10.02.2010
    Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..