是否可以将org.springframework.data.jpa.repository.JpaRepository
存储库用作JPAContainer
的Vaadin?
我们正在从Spring开始建立一个新的Vaadin 7项目。
Spring集成使用Spring Vaadin Integration Addon完成。
答案 0 :(得分:1)
只要你可以从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));
或jsut simple
EntityManager entityManager = getEntityManager(Campaign.class));
JPAContainer<Campaign> container = JPAContainerFactory.make(Campaign.class, entityManager)
好吧,你应该阅读以下帖子并决定你是否不想将JPARepository用作模型层并将其包装到BeanItemContainer中,因为JPAContainer看起来不错但从我的角度来看有一些性能问题。
答案 1 :(得分: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);
}
}
答案 2 :(得分:0)
Spring Data与JPAContainer的架构不兼容。一般来说,我建议根本不使用JPAContainer,而只是从Spring Data存储库获取实体并将它们传递给Vaadin组件。例如:
grid.setContainerDataSource(new BeanItemContainer(Person.class, repo.findAll());
在Vaadin 8出局之前,我还建议使用Viritin(我是作者,并且一直在维护和开发Vaadin本身十年),它可以为您提供更好的打字,更简单的API以及更好的性能。有关完整堆栈示例应用,请参阅this Spring Data CRUD example。