0

だから私はホールドに来て、助けが必要です。私はこれを続ける方法がわからないので、助けを求める必要があります. 問題を解決する方法について、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つの投稿で多くの情報を投げて申し訳ありませんが、誰かが私を正しい方向に投げることができるように、すべてを示したかった.

誤字脱字すみません。

4

1 に答える 1