我正在将我的项目与DB连接
它是Controller的一部分
public @ResponseBody List<Account> getUserList() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("mysql://kimdg3550.cafe24.com:3306/;user=kimdg3550;password=secret");
AccountDaoImpl.entityManager = emf.createEntityManager();
return AccountDaoImpl.getAccount();
}
我收到这个错误
HTTP状态500 - 请求处理失败;嵌套异常是javax.persistence.PersistenceException:没有名为mysql的EntityManager的持久性提供程序://kimdg3550.cafe24.com:3306 /; user = kimdg3550; password = secret type异常报告消息请求处理失败;嵌套异常是javax.persistence.PersistenceException:没有名为mysql的EntityManager的持久性提供程序://kimdg3550.cafe24.com:3306 /; user = kimdg3550; password = secret description服务器遇到内部错误,导致无法完成此请求 . exception org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是javax.persistence.PersistenceException:没有名为mysql的EntityManager的持久性提供程序://kimdg3550.cafe24.com:3306 /; user = kimdg3550; password = secret org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java :948)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)javax.servlet.http.HttpServlet.service(httpServlet.java:648)org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet .java:812)javax.servlet.http.HttpServlet.service(HttpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)根本原因javax.persistence.PersistenceException:否EntityManager的持久性提供程序名为mysql://kimdg3550.cafe24.com:3306 /; user = kimdg3550; password = secret javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)javax.persistence.Persistence.createEntityManagerFactory(Persistence.java) :54)com.myongjoon.spring.HomeController.getUserList(HomeCo ntroller.java:41)sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)java.lang.reflect .Method.invoke(Method.java:497)org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132 )org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)org .springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handl e(AbstractHandlerMethodAdapter.java:80)org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)org.springframework.web . servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838)javax.servlet.http.HttpServlet.service(httpServlet.java:648)org.springframework . web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)javax.servlet.http.HttpServlet.service(httpServlet.java:729)org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) note备注根本原因的完整堆栈跟踪可在Pivotal tc Runtime 3.1.2.RELEASE / 8.0.26.B.RELEASE日志中找到 . Pivotal tc Runtime 3.1.2.RELEASE / 8.0.26.B.RELEASE
我认为我的数据库URL正确无误 .
那么我应该怎么做才能避免这个错误呢?
1 回答
如果您希望不是,请在类路径中创建一个如下所示的
persistence.xml
文件:并使用持久性单元名称(在本例中为
NewPersistenceUnit
)作为createEntityManagerFactory
的参数:在现实世界中,您应该在启动时创建一个
EntityManagerFactory
,并在每次需要时使用该实例创建EntityManager
. 使用您当前的方法,对getUserList
的每个请求都会创建一个新的EntityManagerFactory
,这不是一个好主意 .如果您计划使用Spring Framework,请使用
LocalContainerEntityManagerFactoryBean
factory bean以创建EntityManagerFactory
的实例 .