我有一个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?
问题已更新。我使用Spring,但不使用Spring Boot,也许我可以只添加你提到的那个包?我只使用注释来映射数据。 –
你还在某处定义了bean sessionFactory吗?数据源声明呢?在使用JPA之前,您的应用程序工作吗? –
oops并不意味着在之前提交该消息,但没有完成。 –