gpt4 book ai didi

java - 在 Tomcat 上使用 OpenJPA 时出现 NullPointerException

转载 作者:行者123 更新时间:2023-11-28 22:30:00 25 4
gpt4 key购买 nike

最近在学习J2EE。我使用 IntelliJ,我的网络服务器是 Tomcat。我想将 OpenJPA 添加到我的项目中,但我遇到了一些问题。

我有两个实体:BooksEntitySourcesEntity

当我在 Servlet 中调用 createEntityManager() 时,它给了我一个 NullPointerException

我好像错过了什么,但我不知道为什么。

异常信息如下:

java.lang.NullPointerException
controller.TestServlet.doGet(TestServlet.java:28)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

这是我的TestServlet.java 文件:

@WebServlet(name = "TestServlet", urlPatterns = {"/books"})
public class TestServlet extends HttpServlet {

@PersistenceUnit (unitName = "booksPU")
private EntityManagerFactory emf;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

EntityManager em = emf.createEntityManager();

Query query = em.createNamedQuery("Books.findAll");

request.setAttribute("books", (List<BooksEntity>) query.getResultList());
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}

此行抛出异常:EntityManager em = emf.createEntityManager();

这是我的context.xml 文件:

<Context>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="******" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/FIRST_TEST"/>
</Context>

我的persistence.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

<persistence-unit name="booksPU">
<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
<class>model.BooksEntity</class>
<class>model.SourcesEntity</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/FIRST_TEST"/>
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
<property name="openjpa.ConnectionUserName" value="root"/>
<property name="openjpa.ConnectionPassword" value="******"/>
</properties>
</persistence-unit>
</persistence>

========2014.06.06========

我的目录结构:

My directory structure

========2014.06.07========

Package

最佳答案

这可能只是您代码中的错字。注释应该是 @PersistenceContext,而不是 @PersistentUnit。这就是 emf 保持 null 的原因。

关于java - 在 Tomcat 上使用 OpenJPA 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com