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