Редактор свойств пользовательских классов Spring MVC - PullRequest
1 голос
/ 09 марта 2012

Что не так в этом коде?

У меня есть привязка к свойству класса Fornitore fornitore следующим образом:

@InitBinder
    protected void initBinder(WebDataBinder binder) {       

        binder.registerCustomEditor(Fornitore.class, new PropertyEditorSupport() {          
            @Override
            public void setAsText(String fornitoreId) throws IllegalArgumentException {
                logger.info("FORNITORE:: setValue");
                setValue((Fornitore) fornitoreService.getFornitore(fornitoreId));
            }
            @Override
            public String getAsText() {
                logger.info("FORNITORE:: getValue");
                if (getValue() == null) {
                    return "";
                } else {
                    return ((Fornitore) getValue()).getRagioneSociale();
                }               
            }           
        });
    }

Заканчивается на:

Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at it.trew.prove.model.beans.Fornitore_$$_javassist_0.getRagioneSociale(Fornitore_$$_javassist_0.java)
    at it.trew.prove.web.controllers.ScadenziarioController$1.getAsText(ScadenziarioController.java:56)

Ответы [ 2 ]

1 голос
/ 09 марта 2012

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

0 голосов
/ 28 декабря 2016

Этот вопрос кажется старым, но я весь день ломал голову и надеюсь, что мое решение кому-нибудь поможет.

Кажется, что метод

fornitoreService.getFornitore(fornitoreId) 

возвращаетпрокси-объект, а не реальный объект.Я не знаю, как реализован репозиторий, но я предполагаю, что базовый метод репозитория под сервисом возвращает прокси-объект, а не реальный.

В моем случае (Spring Data) решение былоизменение базового метода хранилища с JpaRepository getOne на CrudRepository метод findOne.

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