java - 当我在 weblogic 中部署时,努力让 JPA 与 Spring 一起工作
问题描述
我使用 spring-boot-starter-data-jpa 创建了一个带有 Spring Boot 和 JPA 的 POC,我的解决方案运行良好。当我尝试将相同的解决方案添加到使用Spring 4和休眠 JPA 2.1版本的旧项目时,就会出现我的问题。当我在 weblogic 中部署我的战争时,我得到的第一个错误是无法自动装配存储库,所以我添加了@EnableJpaRepositories
. 我什至尝试添加我的 weblogic 数据源spring.datasource.jndi-name=EXAMPLE_Data_Source
在哪里,EXAMPLE_Data_Source
但没有运气。
应用类:
@Configuration
@EnableWs
@ComponentScan("com.example.package")
@EnableJpaRepositories(basePackages = {"com.example.repository","com.example.entity"})
public class AppConfig extends WsConfigurerAdapter { //WsConfigurerAdapter is spring-ws-core 2.2.0 Release
@Autowire
MyRepository repository;
存储库类:
public interface MyRepository extends JpaRepository<EntityClass, EntityPKey> {
@Query("select c from EntityClass c where ID = :param1 and TYPE = :param2 and :param3 between FROM_DATE and TO_DATE ")
EntityClass entityClass(@Param("param1") int param1, @Param("param2")
char param2, @Param("param3") Date param3);
}
现在我得到下面的错误:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined" weblogic.application.ModuleException:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined
at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45)
Truncated. see log file for complete stacktrace
Caused By: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:641)
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1157)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:280)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
Truncated. see log file for complete stacktrace
我必须让它在 weblogic 中部署的旧 spring 项目上工作。
问题 1:这种解决问题的方法适用于 Spring 框架还是仅适用于 Springboot?
问题 2:我缺少哪些配置?
问题 3:请指出一个工作示例。我正在努力完成这项工作。
Spring webmvc 和 spring-tx 是 4.0.6 版本
请在您的解释中更详细一点。我还很初级。
提前致谢。
解决方案
您必须配置Below Beans
DriverManagerDataSource
LocalContainerEntityManagerFactoryBean
JpaTransactionManager
请参考这个例子
推荐阅读
- knex.js - knex js中的嵌套查询和unnest函数
- python - Docker 容器中的 ModuleNotFoundError 和导入错误
- reactjs - 不知道如何在这里实现条件渲染(react-native)
- mysql - GROUP BY 根据每列的不同条件
- floating-point - 数据类型浮点数的准确性(IEEE 754 单精度)
- python - 如何在 Python 中使用 Selenium 在 Google 上进行搜索?
- tarantool - 所有 Tarantool 节点 (vshard) 的可用空间
- routes - 如何从 osmnx 导出路由
- c++ - 通过 Freertos 中的队列发送字符串
- nestjs - 在没有 moduleRef.get 的情况下获得服务的可能性