servlet中的Java持久化API
我正在从数据库创建一个实体类,我想从servlet中创建一个实体。我编写了以下代码:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
EntityManagerFactory emFactory = Persistence.createEntityManagerFactory("UniAppPU");
EntityManager em = emFactory.createEntityManager();
Query query = em.createNamedQuery("Uniuser.findByUsername");
query.setParameter("Username","clayd");
List<Uniuser> result = query.getResultList();
out.println("<p>" + result.size() + "</p>");
em.close();
}
}
我有一个简单的html页面,其中表单操作被发送到这个servlet。
<form method="post" action="processLogin">
<input type="submit" value="Sign in">
</form>
以下是帖子:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
持久性xml文件如下所示:
<persistence-unit name="UniversityApplicationPU" transaction-type="JTA">
<jta-data-source>UniversityEntity</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
当没有显示错误时,此操作不起作用。你知道怎么回事吗?多谢各位
# 1 楼答案
此代码缺少类似
首先,您使用了错误的持久性单元名称。用这个
EntityManagerFactory emFactory=持久性。CreateEntityManager工厂(“UniversityApplicationPU”)
其次,您需要在任何获取/更新之前启动事务。您的实际代码如下所示
希望这能奏效