Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EntityManager为空_Java_Jpa_Ejb_Entitymanager_Zk - Fatal编程技术网

Java EntityManager为空

Java EntityManager为空,java,jpa,ejb,entitymanager,zk,Java,Jpa,Ejb,Entitymanager,Zk,我是EJB新手,创建一个有趣的应用程序/学习EJB下面是代码 @Entity @Table(name = "PERSON", schema = "experiment") @NamedQuery(name = "Person.fetchAllPerson" , query = "select p from Person p") public class Person implements Serializable { private static final long serialVe

我是EJB新手,创建一个有趣的应用程序/学习EJB下面是代码

@Entity
@Table(name = "PERSON", schema = "experiment")
@NamedQuery(name = "Person.fetchAllPerson" , query = "select p from Person p")
public class Person implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;
    @Column(name = "name", length = 500)
    private String name;
    @Column(name = "age")
    private Integer age;

    public Long getId() {
        return id;
    }

//    public void setId(Long id) {
//        this.id = id;
//    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Person)) {
            return false;
        }
        Person other = (Person) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Person id ::: "+this.id + " | "+"name ::: "+this.name+" | "+"age ::: "+this.age;
    }
}
上面是实体类::: 下面是我的bean(SessionBean)::

下面是我的persistence.xml:::

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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">
  <persistence-unit name="OCDPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/jndi_postgresql2</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
      <property name="hibernate.show_sql" value="true" />
    </properties>
  </persistence-unit>
</persistence>
我正在使用JBoss AS 7.1.1 final。我在其中创建了一个连接池。它连接到我局域网上的数据库。 不知道出了什么问题。先谢谢你

我想我在pom.xml中遗漏了一些东西 这是我的pom:::

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.discusit</groupId>
    <artifactId>OrgChartDemo</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>

    <name>OrgChartDemo</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- ZK DEPENDENCIES -->
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zkplus</artifactId>
            <version>6.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zhtml</artifactId>
            <version>6.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zkbind</artifactId>
            <version>6.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zul</artifactId>
            <version>6.5.2</version>
        </dependency> 
        <!-- ZK Dependencies ends -->

        <!-- log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- log4j ends -->

        <!-- javax.persistence 2.0 implementation -->
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>
        <!-- javax.persistence 2.0 ends -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>6.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
com.discusit
OrgChartDemo
1
战争
OrgChartDemo
${project.build.directory}/project
UTF-8
爪哇
javaeewebapi
6
假如
org.zkoss.zk
zkplus
6.5.2
org.zkoss.zk
zhtml
6.5.2
org.zkoss.zk
zkbind
6.5.2
org.zkoss.zk
祖尔
6.5.2
log4j
log4j
1.2.17
org.hibernate.javax.persistence
hibernate-jpa-2.0-api
1.0.1.最终版本
org.apache.maven.plugins
maven编译器插件
2.3.2
1.6
1.6
${annowed.dir}
org.apache.maven.plugins
maven战争插件
2.1.1
错误的
org.apache.maven.plugins
maven依赖插件
2.1
验证
复制
${annowed.dir}
符合事实的
爪哇
javaee认可的api
6
罐子

像这样的资源注入:

@PersistenceContext(unitName = "OCDPU")
private EntityManager em;
仅适用于其生命周期由容器管理的客户机类,即EJB、JSF ManagedBean、CDIBean或servlet。在您的例子中,客户机类
PersonSessionBean
是一个EJB,这没关系。错误出现在
PersonSessionBean
的实例化中:

psb = PersonSessionBean.getPersonSessionBean();
这一行是错误的,因为EJB应该通过
@EJB
注释注入:

@EJB PersonSessionBean psb;
或通过JNDI查找检索

但是您还必须知道,客户机类Index2Controller也是容器管理的,从发布的代码来看,情况似乎并非如此


有用的链接:来自Oracle的Java EE 6教程。

资源注入如下:

@PersistenceContext(unitName = "OCDPU")
private EntityManager em;
仅适用于其生命周期由容器管理的客户机类,即EJB、JSF ManagedBean、CDIBean或servlet。在您的例子中,客户机类
PersonSessionBean
是一个EJB,这没关系。错误出现在
PersonSessionBean
的实例化中:

psb = PersonSessionBean.getPersonSessionBean();
这一行是错误的,因为EJB应该通过
@EJB
注释注入:

@EJB PersonSessionBean psb;
或通过JNDI查找检索

但是您还必须知道,客户机类Index2Controller也是容器管理的,从发布的代码来看,情况似乎并非如此


有用的链接:来自Oracle的Java EE 6教程。

客户机类Index2控制器由ZK引擎管理,而不是由容器管理,这就是我编写sb=PersonSessionBean.getPersonSessionBean()的原因;我没有找到任何其他方法来获得一个不由容器管理的类中的bean。感谢您的回复如果您仔细查看stacktrace的第一行,它自己说PersonSessionBean正在创建,问题在于注入实体管理器。感谢您的回复。是的,但由于上述原因,entity manager注入失败。不幸的是,在这个问题上我再也帮不上忙了,因为我从未使用过ZK。客户机类Index2Controller由ZK引擎管理,而不是由容器管理,这就是我编写sb=PersonSessionBean.getPersonSessionBean()的原因;我没有找到任何其他方法来获得一个不由容器管理的类中的bean。感谢您的回复如果您仔细查看stacktrace的第一行,它自己说PersonSessionBean正在创建,问题在于注入实体管理器。感谢您的回复。是的,但由于上述原因,entity manager注入失败。不幸的是,在这个问题上我再也帮不上忙了,因为我从未与ZK合作过。