2013-08-07 13 views
9

Czy można używać repozytoriów org.springframework.data.jpa.repository.JpaRepository jako Vaadin jako JPAContainer?Jak korzystać z repozytoriów danych Spring jako Vaadin JPAContainer

Tworzymy nowy projekt Vaadin 7 od podstaw ze sprężyną 3.2.

Zintegrowanie sprężyny odbywa się z Spring Vaadin Integration Addon.

+0

Chris, znalazłeś rozwiązanie? Zmagam się z tym samym problemem i aktualnie ładuję listę elementów, tworzę kontener BeanContainer, dodam jednostki wewnątrz cyklu foreach i dodam je do tabeli. Czy istnieje lepszy sposób? –

+0

Nie, muszę samodzielnie utworzyć instancję JPAContainer. Przeprogramowuję EntityMangerFactory, a następnie przekazuję go do nowego JPAContainer – d0x

Odpowiedz

1

ile można dostać EntityProvider z JPARepository lub gdzieś indziej można użyć JPAContainer tak:

EntityManager entityManager = getEntityManager(Campaign.class)); 
MutableLocalEntityProvider<Campaign.class)> provider; 
provider = new CachingMutableLocalEntityProvider<Campaign.class)>(Campaign.class), entityManager); 
provider.setTransactionsHandledByProvider(false); 
JPAContainer<Campaign> container = new JPAContainer<Campaign>(Campaign.class);  container.setEntityProvider(EntityProviderUtil.get().getEntityProvider(Campaign.class)); 

lub jsut prosty

EntityManager entityManager = getEntityManager(Campaign.class)); 
JPAContainer<Campaign> container = JPAContainerFactory.make(Campaign.class, entityManager) 

dobrze, powinieneś przeczytać poniższy post i zdecydować, czy nie chciałeś użyć JPARepository jako warstwy modelu i zawinąć go do BeanItemContainer, ponieważ JPAContainer wygląda dobrze, ale ma pewne problemy z wydajnością z mojego punktu widzenia.

JPAContainer issues and different approach

MVP pattern and POJO binding with Hibernate

+1

. Moim celem jest uzyskanie JPAContainer z kontekstu aplikacji. Na przykład, sprężyna tworzy instancję JPAC dla każdego JPARepository. Nie lubię tworzyć ich samodzielnie. – d0x

1
import javax.persistence.EntityManager; 
    import javax.persistence.PersistenceContext; 

    import com.vaadin.addon.jpacontainer.JPAContainer; 
    import com.vaadin.addon.jpacontainer.JPAContainerFactory; 

    @SpringComponent 
    public class SpringDataVaadinJPAContainer { 
     @PersistenceContext 
     private EntityManager entityManager; 

     public SpringDataVaadinJPAContainer() { 
      JPAContainer<Person> container = JPAContainerFactory.make(Person.class, entityManager); 

     } 
    } 
0

Wiosna danych nie jest kompatybilny z architekturą JPAContainer. Ogólnie proponuję nie używać JPAContainer w ogóle, ale po prostu pobrać obiekty z repozytorium Spring Data i przekazać je komponentom Vaadin jako takim. Przykład:

grid.setContainerDataSource(new BeanItemContainer(Person.class, repo.findAll()); 

Do Vaadin 8 jest obecnie, Proponuję także użyć Viritin (jestem autorem i również zostały utrzymanie i rozwój samego Vaadin przez dekadę), która daje lepszą pisania, a także prostsze API lepsza wydajność. Zobacz przykład this Spring Data CRUD example dla przykładowej aplikacji z pełnym stosem.

Powiązane problemy