2016-06-13 4 views
0

Hibernate SearchをSpring Data JPAと統合しようとしています。そのため、サンプルコードを書いてテストしました。Hibernate NoSuchFieldError:INSTANCE

@PersistenceContext 
EntityManager em; 

@Override 
@Transactional 
public List<Place> findAll() { 
    FullTextEntityManager fullTextSession = Search.getFullTextEntityManager(em); 

    QueryBuilder builder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Place.class).get(); 

    double centerLatitude = 0d; 
    double centerLongitude = 0d; 
    org.apache.lucene.search.Query luceneQuery = builder 
      .spatial() 
      .within(100, Unit.KM) 
      .ofLatitude(centerLatitude) 
      .andLongitude(centerLongitude) 
      .createQuery(); 

    javax.persistence.Query jpaQuery = 
      fullTextSession.createFullTextQuery(luceneQuery, Place.class); 

    em.close(); 
    return jpaQuery.getResultList(); 
} 

次のstacktraceでは例外が発生します。

2016-06-13 17:34:30 INFO LogHelper:31 - HHH000204: Processing PersistenceUnitInfo [ 
    name: default 
    ...] 
2016-06-13 17:34:30 INFO Version:37 - HHH000412: Hibernate Core {5.0.6.Final} 
2016-06-13 17:34:30 INFO Environment:213 - HHH000206: hibernate.properties not found 
2016-06-13 17:34:30 INFO Environment:317 - HHH000021: Bytecode provider name : javassist 
2016-06-13 17:34:30 INFO Version:66 - HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
2016-06-13 17:34:31 INFO Dialect:154 - HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect 
2016-06-13 17:34:31 INFO Version:30 - HV000001: Hibernate Validator 5.2.4.Final 
2016-06-13 17:34:31 INFO Version:26 - HSEARCH000034: Hibernate Search 5.5.3.Final 
2016-06-13 17:34:32 INFO SchemaUpdate:105 - HHH000228: Running hbm2ddl schema update 
2016-06-13 17:34:32 WARN ConfigContext:346 - HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified: using LUCENE_CURRENT. 
//...  

[localhost-startStop-1] WARN org.springframework.web.context.support.AnnotationConfigWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in pl.project.api.config.RepositoryConfig: Invocation of init method failed; nested exception is java.lang.NoSuchFieldError: INSTANCE 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
//... 
Caused by: java.lang.NoSuchFieldError: INSTANCE 
    at org.hibernate.search.store.impl.DefaultLockFactoryCreator.createLockFactory(DefaultLockFactoryCreator.java:60) 
    at org.hibernate.search.store.impl.DirectoryProviderHelper.getLockFactory(DirectoryProviderHelper.java:134) 
    at org.hibernate.search.store.impl.DirectoryProviderHelper.createFSIndex(DirectoryProviderHelper.java:124) 
    at org.hibernate.search.store.impl.FSDirectoryProvider.initialize(FSDirectoryProvider.java:53) 
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.initialize(BaseDirectoryProviderService.java:64) 
    at org.hibernate.search.store.spi.BaseDirectoryProviderService.create(BaseDirectoryProviderService.java:49) 
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:230) 
    at org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:90) 
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:256) 
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:513) 
    at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:482) 
    at org.hibernate.search.indexes.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:91) 
    at org.hibernate.search.spi.SearchIntegratorBuilder.initDocumentBuilders(SearchIntegratorBuilder.java:358) 
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildNewSearchFactory(SearchIntegratorBuilder.java:199) 
    at org.hibernate.search.spi.SearchIntegratorBuilder.buildSearchIntegrator(SearchIntegratorBuilder.java:117) 
    at org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:75) 
    at org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) 
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:530) 
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) 
    at  org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879) 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
    ... 21 

私は自分の依存関係とそのバージョンについては何も変わっていません。
私の依存関係

<!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-ehcache</artifactId> 
     <version>5.0.6.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.0.6.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.0.6.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator</artifactId> 
     <version>5.2.4.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-orm</artifactId> 
     <version>5.5.3.Final</version> 
    </dependency> 

私もReleaseTrain(Hopper-SR1)からSpring Data JPAを使用していますので、それはそれはあなたを思わSpring Data JPA 1.10.1

マイPlace.class

@Getter 
@Setter 
@Entity 
@Indexed 
@Spatial 
public class Place implements Serializable { 

    private static final long serialVersionUID = -8379536848917838560L; 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Id 
    @Column(name = "place_id") 
    private Long id; 

    //... 
    @Longitude 
    private Double lng; 

    @Latitude 
    private Double lat; 
    //... 
    } 

Here is my RepositoryConfig mvn dependency:tree of my parent module

+0

可能性のある複製http://stackoverflow.com/questions/21622885/java-lang-nosuchfielderror-instance – PeaceIsPearl

+0

私はそれがおそらく依存性の問題であることは知っていますが、私が書いたように、私は結果とバージョンと依存性を悩ましています。問題の原因を追跡するにはどうすればいいですか –

+0

hibernate注釈jarと何か関係があります。あなたの依存関係に存在する場合は削除してください。 – PeaceIsPearl

答えて

2

です引っ張っているLuceneの互換性のないバージョンです。あなたはmvn dependency:treeの実行結果を共有できますか? Hibernate Search 5.5はLucene 5.3 atmで動作します。

+1

Gunnar(誰がHibernate開発チームにいるのですか?)は確かに正しいです。エラーは、互換性のない依存関係があることを意味します。あなたがリストしたものは正しいが、他の依存関係のためにおそらくもっと多くを含んでいるだろう。 Hibernate Search 5.5は、Hibernate ORM 5.0.xと5.1.x(5.2.xではなく)、Apache Lucene 5.3.x、5.4.x、5.5.x(6.0ではありません)で動作します。 – Sanne

+0

'mvn dependency:tree' http ://pastebin.com/DwA7r4Q1 –

+0

古いバージョンの 'org.apache.lucene:lucene- *'を持っているので、プロジェクトから 'org.elasticsearch:elasticsearch:jar:1.5.2'を起動しました。今はついにそれが動作します。 –