Я пытаюсь подключиться к базе данных 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;
}
}
И ошибка, которую я получаю:
Исключение в потоке "main" javax.persistence.PersistenceException: [PersistenceUnit: ogm-jpa-tutorial] Невозможно построить EntityManagerFactory в org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java.fhigurationJB в or.ejb3Configuration.java: .buildEntityManagerFactory (Ejb3Configuration.java:890) в org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory (HibernatePersistence.java:57) в org.hibernate.ogm.jpa.HibernateOgmPersistence.annateEntityOgmPersistence.createEntity (java). Persistence.createEntityManagerFactory (Persistence.java:63) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:47) в com.mycompany.hibernateneo.App.main (App.java:22) Вызвано: org.hibernate.MappingException : Не удалось получить конструктор для org.hibernate.ogm.persister.SingleTableOgmEntityPersister в org.hibernate.persister.internal.PersisterFactoryImpl.create (PersisterFactoryImpl.java : 185) в org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister (PersisterFactoryImpl.java:135) в org.hibernate.internal.SessionFactoryImpl. (SessionFactoryImpl.java:385) в org.hibernate.cfession.Configuration. .java: 1742) в org.hibernate.ejb.EntityManagerFactoryImpl. (EntityManagerFactoryImpl.java:94) в org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory (Ejb3Configuration.java:905nate). service.spi.ServiceException: невозможно создать запрошенную службу [org.hibernate.ogm.dialect.impl.GridDialectFactory] в org.hibernate.service.internal.AbstractServiceRegistryImpl.createService (AbstractServiceRegistryImpl.java:186) в org.hibernate.hibernate. internal.AbstractServiceRegistryImpl.initializeService (AbstractServiceRegistryImpl.java:150) в org.hibernate.service.internal.AbstractServiceRegistryImpl.getService (AbstractServiceRegistryImpl.java:131) в org.hibernate.og m.datastore.impl.DatastoreServicesInitiator.initiateService (DatastoreServicesInitiator.java:50) в org.hibernate.ogm.datastore.impl.DatastoreServicesInitiator.initiateService (DatastoreServicesInitiator.initiateService (DatastoreServicesInitiator.initiateService (DatastoreServicesInitiator.initiateService) (DatastoreServicesInitiator). SessionFactoryServiceRegistryImpl.java:91) на org.hibernate.service.internal.AbstractServiceRegistryImpl.createService (AbstractServiceRegistryImpl.java:176) на org.hibernate.service.internal.AbstractService.java.service.internal.AbstractService.java.service.internal. .internal.AbstractServiceRegistryImpl.getService (AbstractServiceRegistryImpl.java:131) в org.hibernate.ogm.persister.OgmEntityPersister. (OgmEntityPersister.java:129) в org.hibernate.ogm.persister.SinglentityPersister. sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) в sun.reflect.NativeConstruc torAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) в java.lang.reflect.Constructor.newiberInstance (Constructor.hina26) в java.lang. .PersisterFactoryImpl.create (PersisterFactoryImpl.java:163) ... еще 11 Вызвано: java.lang.IllegalArgumentException: свойство hibernate.ogm.neo4j.database.path не может быть пустым в org.hibernate.ogm.datastore.neo4j.impl .EmbeddedGraphDatabaseFactory.validate (EmbeddedGraphDatabaseFactory.java:61) в org.hibernate.ogm.datastore.neo4j.impl.EmbeddedGraphDatabaseFactory.initialize (EmbeddedGraphDatabaseFactoryDatabaseDatabase.java:52) в org.g. (Neo4jGraphDatabaseServiceFactoryProvider.java:44) на org.hibernate.ogm.datastore.neo4j.impl.Neo4jDatastoreProvider.configure (Neo4jDatastoreProvider.java:77) на org.servicenate.ogm. pl.OgmSessionFactoryServiceRegistryImpl.configureService (OgmSessionFactoryServiceRegistryImpl.java:69) в org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService (AbstractServiceRegistryImpl.initializeService (AbstractServiceRegistryImpl.initializeService) (AbstractServiceRegistryImpl.initializeService) (AbstractServiceRegistryImpl.initializeService) (AbstractServiceRegistryImpl.initializeService). в org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.createDialect (GridDialectFactoryInitiator.java:58) по адресу org.hibernate.ogm.dialect.impl.GridDialectFactoryInitiator.initiateService (GridDialectFactoryInitiator.initiateService (GridDialectFactoryInitiator.initiateService (GridDialectFactoryInitiator. .impl. ) ... еще 26
Пожалуйста, есть идеи?
1 ответ
Удалять
<property name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform"/>
Из файла persistence.xml. HibernateOGM для neo4j в настоящее время использует обходное решение для транзакции внутри самого OGM.
Теперь это отражено в последнем руководстве по бета-версии. Посмотрите на окно предупреждения
Похожие вопросы
Новые вопросы
neo4j
Neo4j - это графическая база данных с открытым исходным кодом (GDB), хорошо подходящая для связанных данных. Пожалуйста, указывайте свою точную версию Neo4j, задавая вопросы. Вы можете использовать его для механизмов рекомендаций, обнаружения мошенничества, поиска на основе графиков, сетевых операций / безопасности и многих других пользовательских случаев. Доступ к базе данных осуществляется через официальные драйверы в Java, JavaScript, Python и .NET или через драйверы сообщества в PHP, Ruby, R, Golang, Elixir, Swift и других.