J'ai une application avec Hibernate 5, et j'ai ajouté JPA 2.1 pour effectuer des mises à jour groupées avec CriteriaBuilder.createCriteriaUpdate().Impossible d'accéder à EntityManager avec JPA 2.1 et Hibernate5
Mais j'ai besoin d'affecter CriteriaBuilder à EntityManager.getCriteriaBuilder(), et je ne peux pas obtenir EntityManager.
Je n'ai pas de fichier persistence.xml et j'ai pensé que Hibernate fournirait un EntityManager pour moi.
J'ai essayé les annotations suivantes dans la classe DAO:
@Autowired
EntityManager entityManager
et
@PersistenceContext
EntityManager entityManager;
Les deux ne parviennent pas à injecter la dépendance. J'ai également essayé d'installer une EntityManagerFactory, mais elle a échoué car je n'ai pas de fichier persistence.xml. Toutes les entités sont annotés comme ceci:
@Entity
@Table(name = "My_Entity")
public class MyEntity extends BaseEntity {
private static final long serialVersionUID = -8442071276091708080L;
@Column(name = "VALUE", nullable = false)
private BigDecimal value;
...
}
Voici une partie de mon 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>
Les instances Hibernate SessionFactory, est-il un moyen pour obtenir le EM de celui-ci?
Question mise à jour. J'utilise Spring, mais pas Spring Boot, peut-être que je peux juste ajouter ce paquet que vous avez mentionné? Je n'utilise que des annotations, pour mapper des données. –
Définissez-vous également les beans sessionFactory quelque part? Qu'en est-il de la déclaration de la source de données? Est-ce que vous utilisiez l'application avant d'utiliser JPA? –
oups ne signifiait pas de commettre ce message avant, il n'a pas été fait. –