2013-12-04 5 views
2

В настоящее время я пытаюсь получить CDI (точнее, Weld) для работы с JSF 2 и продолжительным разговором. Я начинаю разговор в @ConversationScoped мой бэк-бэк. Я также создаю диспетчер объектов @ConversationScoped. К сожалению, сущность, которую я редактирую в своей фонотеке, всегда получает значение LazyInitializationException, когда JSF пытается написать поле сопоставления @ManyToMany. Кажется, что сущность get отделилась от entitymanager. В моем EntityManagerProducer (см. Ниже) метод createEntityManager() не называется bevore LazyInitializationException генерируется, поэтому я предполагаю, что entitymanager на самом деле имеет сеанс. Но из того, что я понимаю, мой код не создает расширенный контекст персистентности (поскольку я не мог понять, как это сделать программно).CDI (Weld) + DeltaSpike + Converstation

Насколько я знаю, DeltaSpike еще не предлагает ничего для ведения длительных разговоров в JSF. Может ли кто-нибудь предложить метод о том, как реализовать длительные разговоры с CDI, используя Weld + DeltaSpike (желательно на Tomcat со сварным сервлетом)?

@ApplicationScoped 
public class EntityManagerProducer { 
    @Inject 
    @PersistenceUnitName("myUnit") 
    private EntityManagerFactory emf; 

    @Produces 
    @ConversationScoped 
    public EntityManager createEntityManager() { 
     return emf.createEntityManager(); 
    } 

    public void closeEm(@Disposes EntityManager em) { 
     em.close(); 
    } 
} 

ответ

0

Исключение инициализации ленивым на самом деле не происходит из расширенных контекстов персистенции или КДИ или DeltaSpike. Это просто такое же поведение, как описано здесь: selectManyCheckbox LazyInitializationException on process validation

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

<f:attribute name="collectionType" value="java.util.ArrayList" /> 

Весь мой код JSF.

0

Наличие EntityManager в области разговора - это только одна сторона уравнения, в какой области присутствуют ваши объекты?

Во избежание отсоединения сущностей они также должны быть в режиме разговора.

В качестве побочного примечания: Я обнаружил, что вместо того, чтобы иметь дело с объектами в длительной перспективе, гораздо легче их привязать в каждой области запроса.

Смежные вопросы