0

我正在尝试连接到 Neo4j 数据库。我的数据库是从 Neo4j 网站“Cineacts Actors &Movies”下载的。它位于 C:\NewMovies

这是我的应用程序:

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;
    }
}

我的持久性文件:

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

我的实体文件:

 @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;
    }  
}

和我得到的错误:

线程“主”javax.persistence.PersistenceException 中的异常:[PersistenceUnit:ogm-jpa-tutorial] 无法在 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)在 org.hibernate.ejb.Ejb3Configuration 构建 EntityManagerFactory .buildEntityManagerFactory(Ejb3Configuration.java:890) 在 org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57) 在 org.hibernate.ogm.jpa.HibernateOgmPersistence.createEntityManagerFactory(HibernateOgmPersistence.java:93) 在 javax.persistence。 Persistence.createEntityManagerFactory(Persistence.java:63) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) at com.mycompany.hibernateneo.App.main(App.java:22) 原因:org.hibernate.MappingException :无法在 org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java: 135) 在 org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:385) 在 org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1742) 在 org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:94) ) 在 org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) ... 6 更多原因:org.hibernate.service.spi.ServiceException:无法创建请求的服务 [org.hibernate.ogm.dialect. impl.GridDialectFactory] ​​在 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) 在 org.hibernate.ogm.datastore.impl.DatastoreServicesInitiator.initiateService(DatastoreServicesInitiator.java:39) 在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl .initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) 在 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) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) ...11 更多原因:java.lang.IllegalArgumentException:在 org.hibernate.ogm.datastore.neo4j.impl.EmbeddedGraphDatabaseFactory.validate(EmbeddedGraphDatabaseFactory.java:61) 在 org.hibernate.ogm.neo4j.database.path 不能为空。 hibernate.ogm.datastore.neo4j.impl.EmbeddedGraphDatabaseFactory.initialize(EmbeddedGraphDatabaseFactory.java:52) 在 org.hibernate.ogm.datastore.neo4j.impl.Neo4jGraphDatabaseServiceFactoryProvider.load(Neo4jGraphDatabaseServiceFactoryProvider.java:44) 在 org.hibernate.ogm。 datastore.neo4j.impl.Neo4jDatastoreProvider.configure(Neo4jDatastoreProvider.java:77) 在 org.hibernate.ogm.service.impl.OgmSessionFactoryServiceRegistryImpl.configureService(OgmSessionFactoryServiceRegistryImpl.java:69) 在 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) 在 org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService(GridDialectFactoryInitiator.java:38) 在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl .initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 26 更多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) 在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal 的 org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService(GridDialectFactoryInitiator.java:38) .AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 26 更多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) 在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal 的 org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService(GridDialectFactoryInitiator.java:38) .AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 26 更多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)在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 还有 26 个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)在 org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) 在 org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) ... 还有 26 个org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) 上的 SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) ... 还有 26 个org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176) 上的 SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91) ... 还有 26 个

请问,有什么想法吗?

4

1 回答 1

1

消除

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

来自persistence.xml 文件。Neo4j 的 HibernateOGM 目前在 OGM 本身内部使用一种解决方法来处理事务。

这现在反映在最新的测试版手册中。查看警告框

于 2014-11-23T00:17:24.270 回答