Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Не удается получить доступ к EntityManager с JPA 2.1 и Hibernate5

Автор вопроса: Marcelo AbiarrajОтветов: 1

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

Но мне нужно назначить 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, есть ли способ получить от него EM?

javaspringhibernatejpahibernate-entitymanager

Ответы

Ответ 1 · Bruno Delor

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы