2016-12-06 3 views
0

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?

Répondre

0

Si vous utilisez un ressort, il serait beaucoup plus facile d'utiliser les modules de démarrage de démarrage à ressort. Pour JPA ce serait "spring-boot-starter-data-jpa" vous pouvez trouver la définition de la dépendance maven here.

De plus, pourriez-vous ajouter plus d'informations sur votre configuration? Vous dites que vous n'utilisez pas un fichier persistence.xml, alors qu'est-ce que vous utilisez pour définir vos sources de données?

+0

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. –

+0

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? –

+0

oups ne signifiait pas de commettre ce message avant, il n'a pas été fait. –