2016-12-06 127 views
0

我有一个Hibernate 5应用程序,并添加了JPA 2.1以使用CriteriaBuilder.createCriteriaUpdate()执行批量更新。无法使用JPA 2.1和Hibernate5访问EntityManager

但我需要从EntityManager.getCriteriaBuilder()分配CriteriaBuilder,我无法获得EntityManager。

我没有一个persistence.xml文件,我以为Hibernate会为我提供一个EntityManager。

我试图在DAO类以下注释:

@Autowired 
EntityManager entityManager 

@PersistenceContext 
EntityManager entityManager; 

都失败注入的依赖。 我也尝试安装一个EntityManagerFactory,但它失败了,因为我没有一个persistence.xml文件。所有实体注释是这样的:

@Entity 
@Table(name = "My_Entity") 
public class MyEntity extends BaseEntity { 

private static final long serialVersionUID = -8442071276091708080L; 

@Column(name = "VALUE", nullable = false) 
private BigDecimal value; 

... 
} 

这里是我的pom.xml的一部分:

<dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.1.3.Final</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.1.3.Final</version> 
     <type>jar</type> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 

的applicationContext.xml

<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/> 

<bean id="transactionManager" 
     class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
    <property name="nestedTransactionAllowed" value="true"/> 
</bean> 

Hibernate的情况下,SessionFactory的,是有办法从它得到EM?

回答

0

如果使用弹簧,则使用弹簧启动器模块会容易得多。对于JPA,它将是“spring-boot-starter-data-jpa”,你可以找到maven dependency的定义here

此外,您是否可以添加有关您的配置的更多信息?你说你不使用persistence.xml,所以你用什么来设置你的数据源?

+0

问题已更新。我使用Spring,但不使用Spring Boot,也许我可以只添加你提到的那个包?我只使用注释来映射数据。 –

+0

你还在某处定义了bean sessionFactory吗?数据源声明呢?在使用JPA之前,您的应用程序工作吗? –

+0

oops并不意味着在之前提交该消息,但没有完成。 –