Что $$ _ Javasassist_11 означает в Java? - PullRequest
1 голос
/ 18 января 2012

Я использую Hibernate в Java.Я выбираю список объектов, выполнив запрос типа from MyObject where field='name'.Это выполняется успешно, и когда я делаю list.size (), он также возвращает 1. Но когда я делаю list.get(0), я получаю объект со всеми полями, равными NULL.В режиме отладки при наведении курсора на объект он выглядит так: com.xyz.data.MyObect_$$_javasassit_11.Что это значит?

Ответы [ 2 ]

1 голос
/ 18 января 2012

Это побочный эффект от того, как Hibernate реализует отложенная загрузка .com.xyz.data.MyObect_$$_javasassit_11 - это подкласс, созданный Hibernate, который переопределил все методы, чтобы сначала убедиться, что сущность загружена, а затем переадресовать вызов на фактический экземпляр.

Обычно это прозрачно, но это может быть важнонекоторые случаи.Одним из наиболее распространенных является страшное исключение LazyInitializationException.Если ваш отладчик поддерживает отслеживаемые выражения, вы можете получить реальные значения полей, используя методы доступа (вместо просмотра поля x создайте выражение для myobject.getX()).

0 голосов
/ 18 января 2012

Это прокси-класс, созданный для вас Hibernate. Это позволяет hibernate (помимо прочего) кэшировать данные и лениво загружать переменные данных экземпляра и т. Д.

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