java - presist 并重新启动后,数据库中没有任何内容休眠
问题描述
我一直在尝试学习 JPA、EJB、servlet,大部分情况下一切正常。但是,无论我做什么,我实际上都无法在 Wildfly 服务器上重新启动应用程序后找到我坚持的任何内容。
真令人沮丧,没有错误消息,日志中没有任何内容,当我检查我的对象是否在带有 .contains 的实体管理器中时,它确实返回 true。
我试过添加一个 .flush()
我尝试将我的类添加到persistance.xml。(它的意思是自动找到它吗?)
我尝试将 generation.database.action 更改为:create、drop-and-create、drop 和 none;没运气。
这是文件,如果有人可以提供帮助,那就太好了,因为我很困惑。
持久性.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2" 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_2.xsd">
<persistence-unit name="EJBColis">
<class>jpa.Colis</class>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties>
</persistence-unit>
</persistence>
EJBColis.java
package ejb;
import java.util.LinkedList;
import java.util.List;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import jpa.Colis;
import jpa.Mesure;
import jpa.Position;
@Stateless
@LocalBean
public class EJBColis {
@PersistenceContext
private EntityManager em;
/**
* Constructeur sans parametre obligatoire
*/
public EJBColis() {
}
public Colis addColis(double poid,double valeur,String origin,String destination,Position p ) {
Colis m = new Colis(poid, valeur, origin, destination, p);
em.persist(m);
em.flush();
em.refresh(m);
return m;
}
public Colis findColis(long id) {
Colis m = em.find(Colis.class, id);
return m;
}
public Position changePosition(long ColisId,double longitude,double lat,String origin,String destination) {
Position m = new Position(longitude,lat, origin, destination);
Colis c = findColis(ColisId);
c.setPosition(m);
em.persist(c);
em.flush();
return m;
}
public Position findPosition(long id) {
Position m = em.find(Position.class, id);
return m;
}
}
addColisServlet.java :
package servlet;
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ejb.EJBColis;
import jpa.Colis;
import jpa.Mesure;
import jpa.Position;
/**
* Servlet implementation class AddColisServlet
*/
@WebServlet("/AddColisServlet")
public class AddColisServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// injection de la reference de l'ejb
@EJB
private EJBColis ejb;
/**
* @see HttpServlet#HttpServlet()
*/
public AddColisServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
double Poid = Double.parseDouble(request.getParameter("poid"));
double valeur = Double.parseDouble(request.getParameter("valeur")) ;
String origine = request.getParameter("origine");
String destination = request.getParameter("destination");
Position position = null;
Colis m = ejb.addColis(Poid, valeur, origine, destination, position);
// ajout de la mesure dans la requete
request.setAttribute("Colis",m);
// transfert a la JSP d'affichage
request.getRequestDispatcher("/showColis.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
调用 addColisServlet 的 html 页面:
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Manipulation des comptes bancaires</title>
<link rel="stylesheet" type="text/css" href="css/base.css" >
</head>
<body>
<h1>Manipulation des comptes bancaires</h1>
<h2>tracker un colis :</h2>
<form action="ShowColisServlet" method="post">
ID : <input type="number" name="ID">
<input type="submit" value="valider">
</form>
<h2>Creer un colis</h2>
<form action="AddColisServlet" method="post">
Poid : <input type="number" name="poid">
valeur : <input type="number" name="valeur">
origine : <input type="text" name="origine">
destination : <input type="text" name="destination">
<input type="submit" value="valider">
</form>
<h2>modifier position d'un colis:</h2>
<form action="ModifColisServlet" method="post">
ID : <input type="text" name="ID">
latitude : <input type="number" name="lat">
longitude : <input type="number" name="long">
emplacement : <input type="text" name="emplacement">
etat : <input type="text" name="etat">
<input type="submit" value="chercher">
</form>
</body>
</html>
我还设置了一个指向代码的 github 链接,它是一个 Eclipse 项目:
解决方案
推荐阅读
- azure - 使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据
- jquery - 如何更改详细信息控件类名图标的颜色
- c# - 在c#循环中运行x个线程
- javascript - 从对象中删除深层项目
- lua - 迭代时更新表值
- c# - 为什么这条线分支好像布尔条件解析为真?
- kotlin - Kotlin fun 参数传递给另一个函数,然后返回
- android - 如何为多个函数调用返回相同的运行 observable?
- python - 系统地重新布线功能
- sql - SSDT 项目部署后问题,当使用 Merge 和“WHEN NOT MATCHED By SOURCE THEN DELETE”播种具有外键约束的表时