Не удалось получить ссылку для (Mongodb / Morphia) - PullRequest
0 голосов
/ 09 апреля 2020

Уже месяц go я сталкиваюсь с проблемой моего проекта Java, которая заключается в том, что при запуске приложения я получаю следующее:

Error on start
    https://pastebin.com/raw/sKszKp4K
And i also get this:
    https://pastebin.com/raw/4m2KzBHv

Это происходит с некоторыми пользователями не для всех пользователей, и это случается с некоторыми "фракциями", в которых есть пользователи, я знаю, что эта ошибка была опубликована здесь, но я не могу найти решение для этого, у меня эта ошибка, так как много времени go и я не знаю, что теперь делать: (

When i stop the application it throws this error
    https://pastebin.com/hX1R3nza
My FactionUser.java class:
    https://pastebin.com/6Z68pULe
My PlayerFaction.java class:
    https://pastebin.com/U7Zj0kGC

Извините, что не вставляю здесь код, но он не позволяет мне поставить более 30000 символов Заранее спасибо!

1 Ответ

0 голосов
/ 10 апреля 2020

Трудно точно сказать, что здесь происходит, но я могу предложить некоторые идеи и посмотреть, приведут ли они вас куда-нибудь. Для ошибок отсутствующих ссылок вероятна одна из двух следующих вещей:

  1. Ссылочный документ / объект был удален с момента сохранения этой ссылки. MongoDB не обеспечивает ссылочную целостность, так что на практике это происходит довольно неплохо, я думаю.
  2. Указанное значение идентификатора фактически не существует в базе данных, поскольку оно никогда не сохранялось. Morphia требует, чтобы ссылочные объекты имели идентификатор перед сохранением ссылочной сущности. Это связано с тем, что Morphia необходимо это значение идентификатора для записи в документ для сохранения ссылки. Как правило, это значение идентификатора генерируется при сохранении референта. Однако в некоторых случаях (например, тип идентификатора не ObjectId) этот идентификатор вручную устанавливается на референте. В этом случае можно затем сохранить ссылающуюся сущность, поскольку у референта есть значение идентификатора в объекте, даже если этот референт никогда не был сохранен. В этом случае у вас по существу будет ссылка на ничто, и вы получите эту ошибку.

Если сущность фактически была просто удалена после сохранения ссылки, и это хорошо, вы действительно можете сказать Morphia игнорировать отсутствующие ссылки в самой аннотации @Reference * 1012. *.

Что касается переполнения стека, кажется, что у вас есть oop во встроенном поля, и поэтому вы можете убедиться, что вы правильно настраиваете свою модель. Morphia не поддерживает подобные циклы, поэтому разработчик обязан не допустить их возникновения.

...