JPA [Hibernate] Ленивая загрузка с проблемой GWT - PullRequest
1 голос
/ 09 декабря 2010

Я пытаюсь использовать JPA с отложенной загрузкой [Hibernate] с интерфейсом GWT

В сущности

 @ManyToOne(targetEntity = Item.class,fetch=FetchType.LAZY)
 private Item item;

В дао

 @Transactional
 public List<Purchase> findAllPurchases() {
   return jpaTemplate.execute(new JpaCallback<List<Purchase>>(){
   public List<Purchase> doInJpa(EntityManager em)
    throws PersistenceException {
    List<Purchase> list = em.createQuery("select o from Purchase o").getResultList();
    for(Purchase p:list){
     Item item = p.getItem();
     if(item!=null)
     item.getItemName();
    }
 return list;
}

});}

и я получаю эту ошибку.

com.google.gwt.user.client.rpc.SerializationException: Тип 'com.hardwarestore.vo.Item _ $$ _ javassist_0' не был включен в набор типов, которые могут быть сериализованы этимSerializationPolicy или его объект Class не могут быть загружены.В целях безопасности этот тип не будет сериализован .: instance = com.hardwarestore.vo.Item@a1eaf6

И класс покупки, и класс Item реализуют интерфейс Serializable.Любая помощь приветствуется.Спасибо.

Ответы [ 2 ]

1 голос
/ 13 декабря 2010

Или вы можете использовать DTO (Объект передачи данных). Просто преобразуйте постоянный объект на стороне сервера, прежде чем отправлять его на сторону клиента.

1 голос
/ 09 декабря 2010

Сериализатор в GWT не может сериализовать прокси-объект вашей коллекции, потому что его класс создается во время выполнения в вашей серверной части. Чтобы сериализовать десериализацию, источники ProxyObject должны быть найдены во время компиляции (я думаю).

Насколько я понимаю процесс сериализации в GWT, вы не можете выполнять отложенную загрузку. Вы должны преобразовать свои сущности таким образом, чтобы создать вызываемый метод, который загружает коллекцию из JS по первичному ключу вашей сущности, которая содержит коллекцию, или вам нужно переключить коллекцию в режим быстрой загрузки.

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