對於Vaadin,可以使用org.springframework.data.jpa.repository.JpaRepository
存儲庫作爲JPAContainer
嗎?如何使用Spring數據存儲庫作爲Vaadin JPAContainer
我們正在用Spring 3.2從頭開始創建一個新的Vaadin 7項目。
春季整合與Spring Vaadin Integration Addon完成。
對於Vaadin,可以使用org.springframework.data.jpa.repository.JpaRepository
存儲庫作爲JPAContainer
嗎?如何使用Spring數據存儲庫作爲Vaadin JPAContainer
我們正在用Spring 3.2從頭開始創建一個新的Vaadin 7項目。
春季整合與Spring Vaadin Integration Addon完成。
至於你可以從JPARepository得到EntityProvider或其他地方,你可以使用JPAContainer這樣的:
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));
或僅僅指剛簡單
EntityManager entityManager = getEntityManager(Campaign.class));
JPAContainer<Campaign> container = JPAContainerFactory.make(Campaign.class, entityManager)
那麼,你應該閱讀下面的帖子,並決定是否您不希望將JPARepository作爲模型層使用並將其包裝到BeanItemContainer中,因爲JPAContainer看起來不錯,但從我的角度來看有一些性能問題。
我的目標是從應用程序上下文中獲得一個JPAContainer。例如,spring會爲每個JPARepository實例化一個JPAContainer。我不喜歡自己實例化它們。 – d0x
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);
}
}
春天數據不與JPAContainer的架構兼容。一般來說,我建議不要使用JPAContainer,而只是從Spring Data存儲庫中獲取實體,並將它們傳遞給Vaadin組件。例如:
grid.setContainerDataSource(new BeanItemContainer(Person.class, repo.findAll());
直到Vaadin 8已經出來了,我也建議使用Viritin(我是作者,也一直在保持和發展Vaadin本身了十年),讓你更好的打字,簡單的API和也更好的性能。請參閱this Spring Data CRUD example瞭解完整堆棧示例應用程序。
克里斯,你有沒有找到一個解決方案?我正在努力解決同樣的問題,目前我加載了一個實體列表,創建一個BeanContainer,在foreach循環中添加實體並將其添加到表中。有沒有更好的辦法? –
不,我需要自己實例化JPAContainer。我自動裝入EntityMangerFactory,然後將它傳遞給一個新的JPAContainer – d0x