这是一个非常基本的问题,我很抱歉,但我似乎无法使用基于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的文档后面这方面没有帮助。
非常感谢您的阅读,任何提示赞赏!
答案 0 :(得分:1)
快速回答 - 我可能错了 - 但我认为Tapestry-jpa旨在将JPA与Tapestry-core(Web框架)结合使用。在你的案例中,我认为普通的JPA不会有任何好处。