2016-07-07 2 views
1

Je tente de créer une application Web JSF en utilisant Neo4j comme base de données sans SQL. Je veux accéder à Neo4j via Hibernate.Hibernate OGM Neo4j - Impossible d'accéder à TransactionManager

Mes dépendances sont

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.hibernate.ogm</groupId> 
      <artifactId>hibernate-ogm-bom</artifactId> 
      <version>5.0.1.Final</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>org.hibernate.ogm</groupId> 
     <artifactId>hibernate-ogm-neo4j</artifactId> 
    </dependency> 

Mes entités se présenter comme suit

@Entity 
public class Person implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@GeneratedValue(generator = "uuid") 
@GenericGenerator(name = "uuid", strategy = "uuid2") 
private String id; 

private String name; 

private Double age; 

@OneToMany(fetch = FetchType.EAGER, mappedBy = "owner", cascade = CascadeType.PERSIST) 
private Set<Car> cars = new HashSet<>(); 
... 

je les sauve au sein de la classe suivante

@Stateless 
public class StorageManager { 

@PersistenceContext(unitName = "neo4j") 
private EntityManager em; 

public void savePerson(Person p) { 
    em.persist(p); 
} 

public void saveCar(Car c){ 
    em.persist(c); 
} 

public void save(String personName, Double personAge, String carName) { 
    Person person = new Person(personName, personAge); 
    Car car = new Car(carName); 
    car.setOwner(person); 
    person.getCars().add(car); 
    em.persist(person); 
} 

Ma persistance Unité

<persistence-unit name="mongo-ogm" transaction-type="JTA"> 
    <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider> 
    <class>entities.Person</class> 
    <class>entities.Car</class> 
    <exclude-unlisted-classes>true</exclude-unlisted-classes> 

    <properties> 
     <property name="hibernate.ogm.datastore.provider" value="neo4j_embedded" /> 
     <property name="hibernate.ogm.neo4j.database_path" value="C:\Users\phe\Documents\Neo4j\sample" /> 
    </properties> 
</persistence-unit> 

Quand je Déployez le WebApp sur mon Wildlfy 9 et que vous souhaitez enregistrer les données je reçois une exception

org.hibernate.resource.transaction.backend.jta.internal.JtaPlatformInaccessibleException: Unable to access TransactionManager or UserTransaction to make physical transaction delegate 

dans Internet Researches fini sans résultat. Il n'y a que quelques tutoriels. Je l'ai essayé avec et sans transaction-type = "JTA".

Avez-vous des idées?

Répondre

0

J'ai trouvé la solution. Comme je suis déployé à Wildlfy, je peux ajouter ce qui suit à mon unité de persistance.

<property name="hibernate.transaction.jta.platform" value="JBossAS" /> 

Cela fonctionne pour moi.