0

I'm trying to connect to Neo4j database. My database is downloaded from Neo4j site "Cineacts Actors &Movies". It located on C:\NewMovies

here comes my Application:

public class App 
{
    private static final String JBOSS_TM_CLASS_NAME = "com.arjuna.ats.jta.TransactionManager";
    public static void main( String[] args )
    {  
TransactionManager tm = getTransactionManager();
        //build the EntityManagerFactory as you would build in in Hibernate Core
      EntityManagerFactory emf = Persistence.createEntityManagerFactory("ogm-jpa-tutorial");
System.out.println( "Hello World!" );
    }

   public static TransactionManager getTransactionManager() {
        try {
            Class<?> tmClass = App.class.getClassLoader().loadClass( JBOSS_TM_CLASS_NAME );
            return (TransactionManager) tmClass.getMethod( "transactionManager" ).invoke( null );
        } catch ( ClassNotFoundException e ) {
            e.printStackTrace();
        } catch ( InvocationTargetException e ) {
            e.printStackTrace();
        } catch ( NoSuchMethodException e ) {
            e.printStackTrace();
        } catch ( IllegalAccessException e ) {
            e.printStackTrace();
        }
        return null;
    }
}

my persistence file:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="ogm-jpa-tutorial" transaction-type="JTA">
        <!-- Use Hibernate OGM provider: configuration will be transparent -->
        <provider>org.hibernate.ogm.jpa.HibernateOgmPersistence</provider>
        <class>com.mycompany.hibernateneo.Movie</class>
        <properties>
            <property name="hibernate.ogm.datastore.provider" value="neo4j_embedded" />
            <property name="hibernate.ogm.neo4j.database_path" value="C:/NewMovies" />

            <!-- defines which JTA Transaction we plan to use -->
            <property name="hibernate.transaction.jta.platform"
                      value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform"/>
        </properties>
    </persistence-unit>
</persistence>

my entity file:

 @Entity
    @Table(name = "Movie")
public class Movie {
   @Id
    String id;
    @Basic
    String title;
@Basic
    String description;
@Basic
    private String language;
@Basic
    private String imdbId;
@Basic
    private String tagline;
    @Basic
    private Integer runtime;
    @Basic
    private String homepage;
    @Basic
    private String trailer;
    @Basic
    private String genre;
    @Basic
    private String studio;
    @Basic
    private Integer version;
    @Basic
    private String imageUrl;
    public Movie() {
    }
    public Movie(String id, String title) {
        this.id = id;
        this.title = title;
    }
    public String getId() {
        return id;
    }
    public String getTitle() {
        return title;
    }
    public String getDescription() {
        return description;
    }
    public void setTitle(String title) {
        this.title=title;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    public void setImdbId(String imdbId) {
        this.imdbId = imdbId;
    }
    public void setTagline(String tagline) {
        this.tagline = tagline;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public void setRuntime(Integer runtime) {
        this.runtime = runtime;
    }
    public void setHomepage(String homepage) {
        this.homepage = homepage;
    }
    public void setTrailer(String trailer) {
        this.trailer = trailer;
    }
    public void setGenre(String genre) {
        this.genre = genre;
    }
    public void setStudio(String studio) {
        this.studio = studio;
    }
    public void setVersion(Integer version) {
        this.version = version;
    }
    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }
    public String getLanguage() {
        return language;
    }
    public String getImdbId() {
        return imdbId;
    }
    public String getTagline() {
        return tagline;
    }
    public Integer getRuntime() {
        return runtime;
    }
    public String getHomepage() {
        return homepage;
    }
    public String getTrailer() {
        return trailer;
    }
    public String getGenre() {
        return genre;
    }
    public String getStudio() {
        return studio;
    }
    public Integer getVersion() {
        return version;
    }
    public String getImageUrl() {
        return imageUrl;
    }
    public String getYoutubeId() {
        String trailerUrl = trailer;
        if (trailerUrl==null || !trailerUrl.contains("youtu")) return null;
        String[] parts = trailerUrl.split("[=/]");
        int numberOfParts = parts.length;
        return numberOfParts > 0 ? parts[numberOfParts-1] : null;
    }  
}

and error which I get:

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: ogm-jpa-tutorial] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) at org.hibernate.ogm.jpa.HibernateOgmPersistence.createEntityManagerFactory(HibernateOgmPersistence.java:93) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at com.mycompany.hibernateneo.App.main(App.java:22) Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.ogm.persister.SingleTableOgmEntityPersister at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:385) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742) at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) ... 6 more Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.ogm.dialect.impl.GridDialectFactory] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:186) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.ogm.datastore.impl.DatastoreServicesInitiator.initiateService(DatastoreServicesInitiator.java:50) at org.hibernate.ogm.datastore.impl.DatastoreServicesInitiator.initiateService(DatastoreServicesInitiator.java:39) at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:150) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.ogm.persister.OgmEntityPersister.(OgmEntityPersister.java:129) at org.hibernate.ogm.persister.SingleTableOgmEntityPersister.(SingleTableOgmEntityPersister.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) ... 11 more Caused by: java.lang.IllegalArgumentException: Property hibernate.ogm.neo4j.database.path cannot be null at org.hibernate.ogm.datastore.neo4j.impl.EmbeddedGraphDatabaseFactory.validate(EmbeddedGraphDatabaseFactory.java:61) at org.hibernate.ogm.datastore.neo4j.impl.EmbeddedGraphDatabaseFactory.initialize(EmbeddedGraphDatabaseFactory.java:52) at org.hibernate.ogm.datastore.neo4j.impl.Neo4jGraphDatabaseServiceFactoryProvider.load(Neo4jGraphDatabaseServiceFactoryProvider.java:44) at org.hibernate.ogm.datastore.neo4j.impl.Neo4jDatastoreProvider.configure(Neo4jDatastoreProvider.java:77) at org.hibernate.ogm.service.impl.OgmSessionFactoryServiceRegistryImpl.configureService(OgmSessionFactoryServiceRegistryImpl.java:69) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131) at org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.createDialect(GridDialectFactoryInitiator.java:58) at org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService(GridDialectFactoryInitiator.java:49) at org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService(GridDialectFactoryInitiator.java:38) at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 26 more

please, any ideas?

1 Answer 1

1

Remove

   <property name="hibernate.transaction.jta.platform"
                  value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform"/>

from the persistence.xml file. HibernateOGM for neo4j currently uses a workaround solution for transaction within OGM itself.

This is now reflected in the latest beta manual. Look at the Warning box

Not the answer you're looking for? Browse other questions tagged or ask your own question.