0

単純な Eclipse 動的 Web プロジェクトを作成して、JSP を使用しようとしています。

基本的な JSP と、パラメーター化されたリクエストを HttpServlet に作成するフォームを作成しました。このサーブレットは、エンティティ Bean を使用してデータをデータベースに格納する必要があります。

注釈によるマッピングを使用しました。

これは私のjspの呼び出し部分です:

<form action="persistencedemo" method="get">
    <input type="submit" name="submit" value='ok'/>
    <input type="hidden" name="firstName" value='<jsp:getProperty property="firstname" name="newCustomer"/>' />
    <input type="hidden" name="lastName"  value='<jsp:getProperty property="lastname" name="newCustomer"/>' />  
</form>

...これは私のBeanの主要なセクションです:

@Entity
@Table(name="CUSTOMERS")
public class CustomerBean implements Serializable {

@Id
@Column(name = "CUSTOMER_ID")
private Long id;

@Column(name = "FIRST_NAME")
private String firstname;

@Column(name = "LAST_NAME")
private String lastname;

public CustomerBean() {
    this.firstname = "";
    this.lastname = "";
}

    // Getters & Setters

そして今 - 最後に - これは私の非常に単純なサーブレットです:

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


    private static final long serialVersionUID = 1L;
    @PersistenceUnit
    private EntityManagerFactory entityManagerFactory;
    @Resource
    private UserTransaction userTransaction;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {


        EntityManager em = entityManagerFactory.createEntityManager();
        CustomerBean c1 = new CustomerBean();
        CustomerBean c2 = new CustomerBean();

        c1.setFirstname("My");
        c1.setLastname("Self");
        c1.setId(3L);

        c2.setId(4L);
        c2.setFirstname(req.getParameter("firstName"));
        c2.setLastname(req.getParameter("lastName"));

        try {
            userTransaction.begin();
            em.persist(c1);
            em.persist(c2);
            userTransaction.commit();
        }
        catch (Exception e) {
            e.printStackTrace();
        }


        resp.getWriter().print("Updated database!");

    }
}

[更新]私のpersistence.xml

<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="hello-world" transaction-type="RESOURCE_LOCAL">
    <class>com.jpa.PersistenceDemo</class>  
        <properties>

            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/customerdb" />
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
            <property name="javax.persistence.jdbc.user" value="customeruser" />
            <property name="javax.persistence.jdbc.password" value="customerpass" />
      </properties>
   </persistence-unit>
</persistence>      

問題: mySQL コネクタをリンクしてテーブルを作成しましたが、entityManagerFactory.createEntityManager()を呼び出すたびにエラー メッセージが表示されてクラッシュします。

Unable to retrieve EntityManagerFactory for unitName null 

まあ、おそらく別の構造を使用してモデル (bean) をビュー (jsp) から分離する必要があるという事実は別として:

ここで何が問題なのですか?

4

1 に答える 1

0
  1. persistence.xml ファイルはどこにありますか?

  2. プロジェクトの構造が正しくない可能性がありますか?EJBは独自の別の部分にありますか? CDI を使用して、またはEnterprise Applicationにプロジェクトの一部をパックしてみてください。

Java を記述したプログラムで "New Enterprise Project" を作成してみて、何が自動的に生成されるかを確認してください。

于 2014-07-31T19:27:51.013 に答える