だから私はホールドに来て、助けが必要です。私はこれを続ける方法がわからないので、助けを求める必要があります. 問題を解決する方法について、YouTube やインターネットでいくつかのチュートリアルを調べましたが、誰も助けてくれませんでした。私は多くの解決策を試しましたが、誰もうまくいきませんでした。
私がやろうとしているのは、ケース管理システム (単純なダミー cms であり、大きなものではありません) です。Java コーディングの知識を広げようとしています。csm は、MySQL に接続する Web アプリケーション上で実行する必要があり、追加および編集できる Web アプリケーション上で実行する必要があります。JSPとサーブレットで簡単に作成しました。
コードに関しては正しいと思いますが、webapp を実行できていないため、100% 確信が持てません。私の問題は、Glassfish で「クエリのコンパイル中にエラーが発生しました [Ärende.getAll: SELECT e FROM cases e]. Unknown entity type [cases]」というエラーが表示されることです。ネットを検索したところ、間違っているのは SQL クエリであることがわかりました。しかし、私が何をしようとしても、それを機能させることはできません。
persistence.xml を介してデータベース (mydb) にアクセスしようとしています。
これが私のコードです
まずはsetterとgetterです(スウェーデン語で書かれている単語もあるので、少し分かりづらかったらすみません)
@Entity
@Table
@NamedQueries(@NamedQuery(name="Ärende.getAll",query = "SELECT e FROM cases e"))
クエリ部分は間違っていると信じている部分ですが、代わりに「Ärende e」と書いてもそれは動作しませんpublic class Ärende implements Serializable { @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column private int idcases; @Column private String Namn; @Column private String Prioritet; @Column private String Status; public int getIdcases() { return idcases; } public void setIdcases(int idcases) { this.idcases = idcases; } public String getNamn() { return Namn; } public void setNamn(String Namn) { this.Namn = Namn; } public String getPrioritet() { return Prioritet; } public void setPrioritet(String Prioritet) { this.Prioritet = Prioritet; } public String getStatus() { return Status; } public void setStatus(String Status) { this.Status = Status; } public Ärende(int idcases, String Namn, String Prioritet, String Status) { this.idcases = idcases; this.Namn = Namn; this.Prioritet = Prioritet; this.Status = Status; } public Ärende(){} }
次に行ったのは、「Ärende」Dao と Local の作成です。
@Stateless public class ÄrendeDao implements ÄrendeDaoLocal { @PersistenceContext private EntityManager em; @Override public void addÄrende(Ärende ärende) { em.persist(ärende); } @Override public void editÄrende(Ärende ärende) { em.merge(ärende); } @Override public void deleteÄrende(int idcases) { em.remove(getÄrende(idcases)); } @Override public Ärende getÄrende(int idcases) { return em.find(Ärende.class, idcases); } @Override public List<Ärende> getAllÄrende() { return em.createNamedQuery("Ärende.getAll").getResultList(); } }
ザ・ローカル
@Local public interface ÄrendeDaoLocal { void addÄrende(Ärende ärende); void editÄrende(Ärende ärende); void deleteÄrende(int idcases); Ärende getÄrende(int idcases); List<Ärende> getAllÄrende(); }
その難しいプロセスの後、ようやくサーブレットを作成し、次にJSPを作成しました
サーブレット:
@WebServlet(name = "ÄrendeServlet", urlPatterns = {"/_rendeServlet"}) public class ÄrendeServlet extends HttpServlet { @EJB private ÄrendeDaoLocal ärendeDao;
protected void processRequest(HttpServletRequest request, HttpServletResponse >Response) throws ServletException, IOException { String action = request.getParameter("action"); String idcasesStr = request.getParameter("idcases"); int idcases=0; if(idcasesStr!=null && !idcasesStr.equals("")) idcases=Integer.parseInt(idcasesStr); String Namn = request.getParameter("Namn"); String Prioritet = request.getParameter("Prioritet"); String Status = request.getParameter("Status"); Ärende ärende = new Ärende(idcases, Namn, Prioritet, Status); if("Add".equalsIgnoreCase(action)){ ärendeDao.addÄrende(ärende); }else if("Edit".equalsIgnoreCase(action)){ ärendeDao.editÄrende(ärende); }else if("Delete".equalsIgnoreCase(action)){ ärendeDao.deleteÄrende(idcases); }else if("Search".equalsIgnoreCase(action)){ ärende = ärendeDao.getÄrende(idcases); } request.setAttribute("ärende", ärende); request.setAttribute("allÄrende", ärendeDao.getAllÄrende()); request.getRequestDispatcher("ärendeinfo.jsp").forward(request,response); }
JSP
<form action="./ÄrendeServlet" method="POST"> <td>Ärende ID</td> <td><input type="text" name="idcases" value="${ärende.idcases}" /></td> <td>Namn</td> <td><input type="text" name="Namn" value="${ärende.Namn}" /></td> <td>Prioritet</td> <td><input type="text" name="Prioritet" value="${ärende.Prioritet}" /> <td><input type="text" name="Status" value="${ärende.Status}" /></td> <input type="submit" name="action" value="Add" /> <input type="submit" name="action" value="Edit" /> <input type="submit" name="action" value="Delete" /> <input type="submit" name="action" value="Search" />
--- 同じ JSP これは、以下のすべてのケースをリストするだけです ---
<th>Ärende ID</th> <th>Namn</th> <th>Prioritet</th> <th>Status</th> <c:forEach items="${allÄrende}" var="stud"> <tr> <td>${stud.idcases}</td> <td>${stud.Namn}</td> <td>${stud.Prioritet}</td> <td>${stud.Status}</td> </tr> </c:forEach>
コード部分はこれですべてです。実行しようとすると、エラーが発生します。データベースはglassfish JDBCを介して接続されており、PINGが正しく行われます。
データベースに関する情報: 接続しようとしているデータベースのテーブル名が呼び出されます: データベース名: mydb ホスト名: root パスワード: vedo
また、persistence.xml には何も書いていないので、persistence.xml をどうするべきか迷っています。
誰かがこれで私を助けることができますか? たった1つの投稿で多くの情報を投げて申し訳ありませんが、誰かが私を正しい方向に投げることができるように、すべてを示したかった.
誤字脱字すみません。