Проект $$ EnhancerByCGLIB $$ 67a694bd появится в Hibernate - PullRequest
6 голосов
/ 09 ноября 2011

У меня есть сущность документа, сопоставленная многозначно одному объекту проекта.

Когда я вызываю document.getProject, в отладчике, в поле проекта объекта документа я вижу что-то о Project$$EnhancerByCGLIB$$67a694bd.

Как получить реальный объект проекта?

Ответы [ 2 ]

11 голосов
/ 09 ноября 2011

То, что вы видите, это Hibernate-Proxy-Object, который позволяет hibernate выполнять ленивую реализацию.

Прежде всего, спросите себя, действительно ли вы хотите получить доступ к исходному объекту.Обычно вам лучше сделать вид, что прокси - это ваш реальный объект, и пусть hibernate сделает всю магию.

Если по какой-то причине вам действительно нужен сам объект (например, если вам нужен точный тип), следующий код должен работать:

if (object instanceof HibernateProxy) {
   return ((HibernateProxy) object).getHibernateLazyInitializer().getImplementation();
}

Вы должны знать, что результат написан вышеКод даст вам отдельный объект, который больше не находится под контролем гибернации, поэтому изменения в объекте не будут синхронизированы с базой данных!

1 голос
/ 22 февраля 2013

Я получаю сообщение об ошибке с этой строкой, потому что я забыл добавить скобки в вызов метода. Убедитесь, что у вас нет этого:

document.getProject

Когда вы действительно это имеете в виду:

document.getProject()
...