在非Web项目中使用tapestry-jpa和tapestry-ioc

时间:2015-06-08 10:50:21

标签: jpa tapestry

这是一个非常基本的问题,我很抱歉,但我似乎无法使用基于Tapestry-IOC的简单应用程序来使用内置的Tapestry JPA模块。

应用程序不一定意味着作为Web项目,因此依赖关系只是用于JPA集成的tapestry-ioc和tapestry-jpa。之前我使用过hibernate-entitymanager,一切正常。但我想我可能宁愿使用Tapestry的官方JPA支持。

所以我所做的就是获得上面提到的依赖项(在Tapestry版本5.3.7中)并编写测试的开头。 这个开头看起来像这样

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class);
EntityManager em = registry.getService(EntityManager.class);

这就是全部。因为一旦我尝试这个,我就会收到错误,即没有服务会实现EntityManager接口。

所以我添加了Tapestry JPA模块:

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class, JpaModule.class);

但是我再次收到JpaModule想要为ApplicationStatePersistenceStrategySource服务做出贡献的错误。这项服务似乎在TapestryModule中定义,所以我做了

Registry registry = RegistryBuilder.buildAndStartupRegistry(MyModule.class, JpaModule.class, TapestryModule.class);

但由于缺少servlet API,这会导致错误。所以现在我已经到了必须为Tapestry定义Web环境的地步。但我不想要这个,我只是想使用JPA集成。

这甚至可能吗?如果是这样,我该怎么做?在http://tapestry.apache.org/integrating-with-jpa.html的文档后面这方面没有帮助。

非常感谢您的阅读,任何提示赞赏!

1 个答案:

答案 0 :(得分:1)

快速回答 - 我可能错了 - 但我认为Tapestry-jpa旨在将JPA与Tapestry-core(Web框架)结合使用。在你的案例中,我认为普通的JPA不会有任何好处。