2016-03-29 11 views
0

Мы работаем с набором веб-сервисов, которые мы разрабатываем.Hibernate возвращает прокси для объекта, установленного в EAGER

Одна из служб извлекает информацию из некоторых таблиц с использованием JPA-сопоставлений. Hibernate возвращает объект, и он работает так, как ожидалось.

Другие службы получают очень похожий объект, и он возвращает прокси вместо объекта чтения. Для выборки выбрано EAGER, поэтому я действительно не понимаю, почему это происходит. Мы попробовали несколько способов преобразования прокси-сервера в реальные данные (что я понимаю, что это необязательно, поскольку оно настроено на EAGER), но прокси-сервер не преобразуется.

Мы работаем с hibernate 3.5.4-final, если это имеет значение.

Я действительно не знаю с чего начать, любой намек?

@Entity 
public class Foo1 
{ 
    @OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL) 
    private List<Foo2> list = new ArrayList<Foo2>(); 
} 

@Entity 
public class Foo2 
{ 
    @ManyToOne(fetch = FetchType.EAGER) 
    private Foo3 obj; 
} 

Чтобы получить данные, которые мы называем:

entityManager.find(Foo1.class, id);  

Одна мысль у меня была в том, что, возможно, Hibernate оказывает внутреннее исключение удалось, и именно поэтому я получаю прокси вместо реального объекта?

EDIT Это конфигурация Hibernate, связанная с вопросом:

<property name="hibernate.max_fetch_depth" value="0"/> 
<property name="hibernate.default_batch_fetch_size" value="16"/> 
<property name="hibernate.jdbc.batch_size" value="16"/> 
+1

Можете ли вы опубликовать этот класс сущности и как вы получаете объект. –

+0

@MadhusudanaReddySunnapu: сделано, извините. Я должен был добавить его изначально. –

+0

Оба 'Foo2' и' Foo3' отмечены как EAGER. Я думаю, что вы видите прокси-сервер для списка «Список ». Можете ли вы включить 'show_sql' и проверить, запущены ли запросы, чтобы получить отношения EAGER или нет? –

ответ

0

Мы исправили проблему, призывающую entityManager.unProxy, но он по-прежнему чувствует себя не так, как это должно быть уже unProxied как отображение устанавливаются в EAGER ,

+0

в идеале должен загружать коллекцию EAGER. Получили ли вы возможность проверить, запущены ли запросы, чтобы получить отношения EAGER или нет? –

+0

@MadhusudanaReddySunnapu: в этом случае запросы не запускаются. –

+0

@MadhusudanaReddySunnapu: Конечно, это упрощенный пример, реальная сущность (Foo3) имеет сложное дерево зависимостей. Я не уверен, может ли это иметь последствия или нет. –