Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Hibernate 无法访问entityManager中的条件生成器_Hibernate_Jakarta Ee_Jpa_Jpa 2.0 - Fatal编程技术网

Hibernate 无法访问entityManager中的条件生成器

Hibernate 无法访问entityManager中的条件生成器,hibernate,jakarta-ee,jpa,jpa-2.0,Hibernate,Jakarta Ee,Jpa,Jpa 2.0,我正在尝试从hibernate 3迁移到JPA2,但无法获得criteria builder 我将这些依赖项添加到pom.xml中 <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.

我正在尝试从hibernate 3迁移到JPA2,但无法获得criteria builder

我将这些依赖项添加到pom.xml中

<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>

    <parent>
        <groupId>com.JpaTest</groupId>
        <artifactId>JpaTest-parent</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../../pom.xml</relativePath>
    </parent>  


  <artifactId>JpaTest-services</artifactId>
  <version>${JpaTest.version}</version>
  <packaging>ejb</packaging>

  <name>JpaTest-services</name>
  <url>http://maven.apache.org</url>

  <dependencies>
      <dependency>
        <groupId>com.JpaTest</groupId>
        <artifactId>JpaTest-modeles</artifactId>
        <version>${JpaTest.version}</version>
    </dependency>
    <!-- EJB 3.0 -->
    <dependency>
      <groupId>javaee</groupId>
      <artifactId>javaee-api</artifactId>
      <version>5</version>
      <scope>provided</scope>
    </dependency>
    <!-- JPA 2  -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
                <version>4.1.7.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.java-persistence</groupId>
            <artifactId>jpa-api</artifactId>
                <version>2.0-cr-1</version>
        </dependency>
  </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
这把刀:

package com.JpaTest.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.JpaTest.model.TestEntity;

public class JpaTestDaoImpl implements IJpaTestDao {

    private static final String PERSISTENCE_UNIT_NAME = "testPU";
    private EntityManagerFactory emf;
    private EntityManager em;

    public JpaTestDaoImpl() {
        emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        em = emf.createEntityManager();
    }


    @Override
    public Integer Create(TestEntity c) {
        em.persist(c);
        em.flush();
        em.refresh(c);
        //HibernateUtil.getSessionFactory().getCurrentSession().persist(c);
        //HibernateUtil.getSessionFactory().getCurrentSession().flush();
        //HibernateUtil.getSessionFactory().getCurrentSession().refresh(c);
        return (Integer) c.getId();
    }

    @Override
    public TestEntity Read(Integer id) {
        TestEntity c = (TestEntity) em.find(TestEntity.class, id);
        //TestEntity c = (TestEntity) HibernateUtil.getSessionFactory().getCurrentSession().get(TestEntity.class, id);
        return c;
    }

    @Override
    public List<TestEntity> ReadAll() {
        @SuppressWarnings("unchecked") 
        //List<TestEntity> myList = (List<TestEntity>) HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(TestEntity.class).list();
        List<TestEntity> myList = em.get :(
        return myList;
    }

    @Override
    public void update(TestEntity c) {
        HibernateUtil.getSessionFactory().getCurrentSession().update(c);
        HibernateUtil.getSessionFactory().getCurrentSession().flush();
    }

    @Override
    public void delete(TestEntity c) {
        HibernateUtil.getSessionFactory().getCurrentSession().delete(c);
        HibernateUtil.getSessionFactory().getCurrentSession().flush();
    }


}
package com.JpaTest.dao;
导入java.util.List;
导入javax.persistence.EntityManager;
导入javax.persistence.EntityManagerFactory;
导入javax.persistence.persistence;
导入com.JpaTest.model.TestEntity;
公共类JpaTestDaoImpl实现IJpaTestDao{
私有静态最终字符串持久化\u单元\u NAME=“testPU”;
私人实体管理工厂emf;
私人实体管理者;
公共JpaTestDaoImpl(){
emf=Persistence.createEntityManagerFactory(Persistence\u UNIT\u NAME);
em=emf.createEntityManager();
}
@凌驾
公共整数创建(TestEntity c){
em.c;
em.flush();
em.c;
//HibernateUtil.getSessionFactory().getCurrentSession().persist(c);
//HibernateUtil.getSessionFactory().getCurrentSession().flush();
//HibernateUtil.getSessionFactory().getCurrentSession().refresh(c);
返回(整数)c.getId();
}
@凌驾
公共测试实体读取(整数id){
TestEntity c=(TestEntity)em.find(TestEntity.class,id);
//TestEntity c=(TestEntity)HibernateUtil.getSessionFactory().getCurrentSession().get(TestEntity.class,id);
返回c;
}
@凌驾
公共列表ReadAll(){
@抑制警告(“未选中”)
//List myList=(List)HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(TestEntity.class).List();
List myList=em.get:(
返回myList;
}
@凌驾
公共作废更新(测试实体c){
HibernateUtil.getSessionFactory().getCurrentSession().update(c);
HibernateUtil.getSessionFactory().getCurrentSession().flush();
}
@凌驾
公共作废删除(测试实体c){
HibernateUtil.getSessionFactory().getCurrentSession().delete(c);
HibernateUtil.getSessionFactory().getCurrentSession().flush();
}
}

我不知道我做错了什么。

有一个javax.persistence,里面没有criteriaBuilder

  <groupId>javaee</groupId>
  <artifactId>javaee-api</artifactId>
  <version>5</version>
javaee
JavaEEAPI
5.
移动到

<groupId>org.jboss.javaee</groupId>
<artifactId>jboss-javaee</artifactId>
<version>5.0.1.GA</version>
org.jboss.javaee
JBossJavaEE
5.0.1.GA
解决了这个问题


但是有一点我不明白,它们都是JEE5实现,它们不都应该包含相同的内容吗?

您在persistence.xml文件中添加的

<persistence-unit name="servicioPU">
      <jta-data-source>java:jboss/datasources/connDS</jta-data-source>
      <properties>
       <!-- Properties for Hibernate -->
       <property name="hibernate.hbm2ddl.auto" value="update" />
       <property name="hibernate.show_sql" value="false" />
    </properties>
</persistence-unit>

java:jboss/datasources/connDS
<persistence-unit name="servicioPU">
      <jta-data-source>java:jboss/datasources/connDS</jta-data-source>
      <properties>
       <!-- Properties for Hibernate -->
       <property name="hibernate.hbm2ddl.auto" value="update" />
       <property name="hibernate.show_sql" value="false" />
    </properties>
</persistence-unit>