0
我知道有大量問題涉及到類似問題,但我沒有設法爲我的問題提取解決方案。JPA EntityManager Nullpointer在多個類中拆分功能時出現異常(GlassFish,EclipseLink)
我正在嘗試構建一個RESTful Web應用程序,它提供使用JPA(EclipseLink 2.4)提供的數據,並在Glassfish 3.1.2.2上運行。
爲了測試我設置MySQL中的留言數據庫,並創造了這個集所有功能於一身的解決方案:
// imports etc...
// Guestbook class has @Entity
@Stateless
@Path("guestbook")
public class GuestService {
@PersistenceContext
private EntityManager em;
@GET
public Response entry() {
Guestbook entry = em.find(Guestbook.class, someid);
return Response.ok(entry.getMsg()).build();
}
}
這工作得很好,但我想它在幾個層,像這樣分割:REST - > DAO - >實體 這將轉變爲:
@Stateless
@Path("guestbook")
public class GuestService {
private DAO dao;
@GET
public Response entry() {
Guestbook entry = dao.getEntry(someid);
return Response.ok(entry.getMsg()).build();
}
}
// ...
public class DAO {
@PersistenceContext
private EntityManager em;
public Guestbook getEntry(int someid) {
return em.find(Guestbook.class, someid);
}
}
所以訪問EM在getEntry(當這會產生一個空指針異常),因爲它是空。 我的persistence.xml看起來是這樣的:提前
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="..." xmlns:xsi="..." xsi:schemaLocation="...">
<persistence-unit name="guestbook" transaction-type="JTA">
<jta-data-source>jdbc/mysqldatasource</jta-data-source>
<class>model.Guestbook</class>
</persistence-unit>
</persistence>
謝謝,我很期待您的建議!
非常感謝你,這真的幫助了我,並暗示了我犯的錯誤。我已經按照您的建議使用了這些註釋。現在,我得到了這個工作,我試圖讓REST類實現一個接口,但這給了我另一個錯誤(java.lang.IllegalArgumentException:對象不是一個聲明類的實例)。你可以暗示這個錯誤的來源嗎?再次感謝! – Imperative 2013-02-14 10:39:15