2016-12-06 11 views
0

У меня есть приложение с Hibernate 5 и добавлено JPA 2.1 для выполнения массовых обновлений с помощью CriteriaBuilder.createCriteriaUpdate().Не удается получить доступ к EntityManager с JPA 2.1 и Hibernate5

Но мне нужно назначить CriteriaBuilder из EntityManager.getCriteriaBuilder(), и я не могу получить 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, есть способ получить ЭМ от него?

ответ

0

Если вы используете пружину, было бы намного проще использовать модули запуска пружинных ботинок. Для JPA это будет «spring-boot-starter-data-jpa», вы можете найти определение зависимости maven here.

Кроме того, не могли бы вы добавить дополнительные сведения о вашей конфигурации? Вы говорите, что не используете persistence.xml, так что вы используете для установки ваших источников данных?

+0

Вопрос обновлен. Я использую Spring, но не Spring Boot, может быть, я могу просто добавить этот пакет, который вы упомянули? Я использую только аннотации, чтобы отображать данные. –

+0

Вы также определите beans sessionFactory? Как насчет объявления данных? Было ли приложение работать перед использованием JPA? –

+0

oops не означает, что это сообщение было принято раньше, это не было сделано. –