【问题标题】:@PersistenceContext EntityManager (JPA)@PersistenceContext EntityManager (JPA)
【发布时间】:2023-03-23 19:22:02
【问题描述】:

我正在使用 JPA 和 EJB 创建一个 Java EE 应用程序。 @PersistenceContext(unitName = "airline") 中的问题,当我评论这一行时,它给了我错误 null_pointer_exception 并且当代码在服务器上运行时,它得到以下错误。

Severe:   Exception while preparing the app : Could not resolve a persistence unit corresponding to the persistence-context-ref-name [com.airline.service.Test2EJBService/entityManager] in the scope of the module called [Test2]. Please verify your application.

我的课:

AddPassenger2

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


    @EJB
    Test2EJBService bService;


   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {

            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet AddPassenger</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h4> Hello Every body in Test2 :) <h4>");
            out.println("</body>");
            out.println("</html>");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);

        Passenger passenger = new Passenger();

        passenger.setFirstName("Loai");
        passenger.setLastName("Amr");

        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, 1996);
        cal.set(Calendar.MONTH, 9);
        cal.set(Calendar.DAY_OF_MONTH, 30);
        Date dob = cal.getTime();

        passenger.setDob(dob);
        passenger.setGender(Gender.Male);
        passenger.setFlightClass(FlightClass.Couch);     

        bService.addPassenger(passenger);

        System.out.println("First name : " + passenger.getFirstName());

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

我的 EJB 容器:

@Stateless
@LocalBean
public class Test2EJBService {

//    @PersistenceUnit(unitName = "Test2PU")
    @PersistenceContext(unitName = "airline")
    private EntityManager entityManager;

    public void addPassenger(Passenger passenger) {
//        EntityManager createEntityManager;
//        createEntityManager = Persistence.createEntityManagerFactory("Test2PU").createEntityMana‌ger();
        entityManager.persist(passenger);
        System.out.println("Done");
    }
}

和persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="Test2PU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>jdbc/airline</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    </properties>
  </persistence-unit>
</persistence>

enter image description here

任何机构都可以帮助我在同一个错误中花费 3 天但无法解决它。

这里是我们与我的数据库的连接: enter image description here

【问题讨论】:

标签: java database jpa glassfish ejb


【解决方案1】:

persistence.xml 文件中的 persistence-unit-name 仍然显示“Test2PU”而不是“航空公司”。验证这一点。另外,请确保您的连接池和 JDBC 资源在服务器上以相同的名称(即航空公司)正确配置

【讨论】:

  • 我确保连接可以查看我为它编辑的帖子中的图片。
  • 图片并没有完全表达我的意思。我希望连接池和 JDBC 资源配置在您的 glassfish 服务器上,而不是在 netbeans 或您的源代码上
  • 如果你坚持使用“Test2PU”作为你的持久化单元名称,那么你应该使用@PersistenceContext(unitName="Test2PU") 而不是@PersistenceContext(unitName="airline")。
  • 你能帮我确保 glassfish 和池和 JDBC 资源之间建立连接吗??
  • 你能看到我在 glassfish 说的问题中编辑的第二张图片(Ping 成功)。你是这个意思吗?
猜你喜欢
  • 2018-01-20
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2017-05-19
  • 1970-01-01
  • 2015-09-28
  • 2017-03-20
相关资源
最近更新 更多