JPA空指针异常

时间:2014-04-25 17:12:20

标签: java jpa nullpointerexception ejb

我不熟悉java环境但是我必须开发一个java项目,我发现了JPA,因为我理解像微软实体框架这样的技术。

我在youtube上经历了下面的教程,但我正在使用空指针异常,但我无法理解发生了什么,因为我在教程中做了同样的事情。我的项目结构如下。我有一个jsp文件,我使用这个文件作为主页面,所以我从这个文件运行项目。因为必要,我包括index.xhtml。您还可以在下面找到此文件和index2.java文件(其" JSF Managed Bean")。

问题出在" tablo1FacadeLocal.create(tbl1);"线。

如果你能发现问题会很好,但如果你建议另一种方式或类似实体框架的东西,它也适用于我。

http://www.youtube.com/watch?v=4HhRF20-Jhs

enter image description here

Tablo1和Tablo2是我的表,所以我创建了Tablo1.java和Tablo2.java"实体类来自数据库"。

然后我为实体类做了新的>"会话Bean"并在ejb包中创建了外墙。

最后我做了新的>" JSF Managed Bean"。 Managed Bean名称是index2.java

index2.jsp

<%@page import="Web.index2"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Hello World!</h1>

    <%
        index2 indx = new index2();
        indx.setTablo1Values();
    %>

</body>
</html>

index2.java

package Web;

import ejb.Tablo1FacadeLocal;
import entities.Tablo1;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class index2 {

    @EJB
    Tablo1FacadeLocal tablo1FacadeLocal;

    public index2() {
    }

    public void setTablo1Values() {
        Tablo1 tbl1 = new Tablo1();

        tbl1.setClm1(5);
        tbl1.setClmn2("fdfsfsdfs");

        tablo1FacadeLocal.create(tbl1);
    }
}

1 个答案:

答案 0 :(得分:0)

您有两种选择。第一个是

try
{
    index2 indx=(index2)new   
    InitialContext().lookup(index2.class.getName());
}
catch(NamingException e)
{
    out.println(e.getMessage());
}

indx.setTablo1Values();

在上面你将index2视为EJB。当bean是EJB时,您无法创建相同的实例。您需要容器(服务器)为您创建它 第二个选项是使用JSP标签进行访问 #{index2.setTablo1Values()}
我认为方法2可能会给您一些问题,以获取更多信息,请阅读here