Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
То, что это добавляет две записи на таблицу, похоже на Вас, отсутствуют обратный атрибут . И начиная с изменяются человек и начиная с группа, NHibernate сохраняет отношение дважды (однажды для каждого объекта). Обратный атрибут специально для предотвращения этого.
я не уверен в том, как добавить его в отображении в коде, но ссылка показывает, как сделать это в XML.
@Santiago я думаю, что Вы правы.
ответ мог бы просто быть то, что необходимо удалить одно из объявлений ManyToMany, смотря больше на Быстрый, похоже, что могло бы быть достаточно умно просто сделать это для Вас.
Вы удостоверяетесь, что добавили Человека к Группам. Администратор? Необходимо сделать обе ссылки.
У Вас есть три права таблиц?
Люди, Группы и GroupAdministrators
, когда Вы добавляете к обеим сторонам, что добираетесь
Люди (с идентификатором p1) Группы (с идентификатором g1)
и в GroupAdministrators, у Вас есть два столбца и таблица, которая имеет
(p1, g1)
(p1, g1)
и Ваш код модульного теста, похож на следующее.
Context hibContext //Built here
Transaction hibTrans //build and start the transaction.
Person p1 = new Person()
Groups g1 = new Groups()
p1.getGroupsOwned().add(g1)
g1.getAdmins().add(p1)
hibTrans.commit();
hibContext.close();
И затем в Вашем тесте Вы делаете новый контекст и тест для наблюдения то, что находится в контексте, и Вы возвращаете правильную вещь, но Ваши таблицы все испачканы?