Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未创建hibernate with lucene搜索索引文件:IndexWriterConfig.setWriteLockTimeout(J)Lorg/apache/lucene/index/IndexWriterConfig;_Java_Hibernate_Lucene_Hibernate Search - Fatal编程技术网

Java 未创建hibernate with lucene搜索索引文件:IndexWriterConfig.setWriteLockTimeout(J)Lorg/apache/lucene/index/IndexWriterConfig;

Java 未创建hibernate with lucene搜索索引文件:IndexWriterConfig.setWriteLockTimeout(J)Lorg/apache/lucene/index/IndexWriterConfig;,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我有一个小项目想与lucene和hibernate集成: 这是bean文件: 包com.domain.java import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import org.hibernate.search.annotations.Analyzer; import org.hibernate.sea

我有一个小项目想与lucene和hibernate集成: 这是bean文件: 包com.domain.java

 import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
   import javax.persistence.Id;

    import org.hibernate.search.annotations.Analyzer;
      import org.hibernate.search.annotations.DocumentId;
       import org.hibernate.search.annotations.Field;
      import org.hibernate.search.annotations.Indexed;
       import org.hibernate.search.annotations.Store;

     @Entity
     @Indexed
 @Analyzer(impl = org.apache.lucene.analysis.standard.StandardAnalyzer.class)

public class TempFile {
    @Field(store = Store.YES)
    private String iconName;

    @Field(store = Store.YES)
    private String name;

    @Id
    @DocumentId
    @Field(store = Store.YES)

    private String path;

    @Field(store = Store.YES)
    private boolean mightHaveThumbnail;

    @Field(store = Store.YES)
    private boolean folder;

    @Field(store = Store.YES)
    private boolean file;

    public String getIconName() {
        return iconName;
    }
    public String getName() {
        return name;
    }
    public String getPath() {
        return path;
    }
    public boolean isMightHaveThumbnail() {
        return mightHaveThumbnail;
    }
    public boolean isFolder() {
        return folder;
    }
    public boolean isFile() {
        return file;
    }
    public void setIconName(String iconName) {
        this.iconName = iconName;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public void setMightHaveThumbnail(boolean mightHaveThumbnail) {
        this.mightHaveThumbnail = mightHaveThumbnail;
    }
    public void setFolder(boolean folder) {
        this.folder = folder;
    }
    public void setFile(boolean file) {
        this.file = file;
    }

}
这是Hibernate文件:

package com.domain.java;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.hibernate.service.ServiceRegistry;

public class HibernateTest {

    public static void main(String[] args) {
        TempFile mm = new TempFile();

        mm.setFile(true);
        mm.setPath("patdsaasdsadahswdsaaad "+new Date());
        mm.setName("nasdasassadasaeeassaaasddas "+new Date());

        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream("./resources/postgres/hibernate.properties"));
        //  readAPropertyFile("./resources/postgres/hibernate.properties");

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Configuration configuration = new Configuration();

        File file = new File("./resources/postgres/hibernate.cfg.xml");
        System.out.println(file.exists());
        configuration.mergeProperties(properties);
        configuration.configure(file);
        configuration.addAnnotatedClass(TempFile.class);
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();

        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        Session session = sessionFactory.openSession();
        session.beginTransaction();     
        FullTextSession fullTextSession = Search.getFullTextSession(session);
        try {
            fullTextSession.createIndexer().startAndWait();
            fullTextSession.beginTransaction();
            fullTextSession.close();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 


//      session.save(mm);
//      session.getTransaction().commit();
        session.close();

        // now lets pull events from the database and list them
        session = sessionFactory.openSession();
        session.beginTransaction();
        List result = session.createQuery("from TempFile").list();
        for ( TempFile event : (List<TempFile>) result ) {
            System.out.println( "Event (" + event.getPath() + ") : " + event.getPath() );
            System.out.println( "Event (" + event.getName() + ") : " + event.getName() );

        }
        session.getTransaction().commit();
        session.close();




    }

    private static void readAPropertyFile(String propertiesFilePath) {
        Properties prop = new Properties();
        InputStream input = null;

        try {

            input = new FileInputStream(propertiesFilePath);

            // load a properties file
            prop.load(input);

            // get the property value and print it out

            Enumeration<?> e = prop.propertyNames();
            while (e.hasMoreElements()) {
                String key = (String) e.nextElement();
                String value = prop.getProperty(key);
                System.out.println("Key : " + key + ", Value : " + value);
            }

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

      }
我在运行上述代码时遇到以下异常:

2016年5月27日上午6:39:19 org.hibernate.Version日志版本 信息:hh000412:Hibernate核心{5.1.0.Final} 2016年5月27日上午6:39:19 org.hibernate.cfg.Environment 信息:HH000206:找不到hibernate.properties 2016年5月27日上午6:39:19 org.hibernate.cfg.Environment buildBytecodeProvider 信息:HH000021:字节码提供程序名称:javassist 真的 2016年5月27日上午6:39:19 org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver 分解实体 警告:HH90000012:已识别过时的hibernate命名空间。使用 名称空间 相反对过时的DTD/XSD命名空间的支持可以在以下位置删除: 随时都可以。 2016年5月27日上午6:39:19 org.hibernate.annotations.common.reflection.java.JavaReflectionManager 信息:HCANN000001:Hibernate Commons注释{5.0.1.Final} 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.ConnectionProviderInitiator 实例化ProxoolProvider 警告:HH000209:遇到proxool属性,但在类路径上找不到proxool提供程序类;这些 属性将被忽略。 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 配置 警告:HHH10001002:使用Hibernate内置连接池(不用于生产!) 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 建筑创造者 信息:HHH10001005:在URL[jdbc:p]处使用驱动程序[org.postgresql.driver]ostgresql://localhost:5432/hibernatedb] 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 建筑创造者 信息:HHH10001001:连接属性:{user=postgres,password=**} 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 建筑创造者 信息:HHH10001003:自动提交模式:错误 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.connections.internal.PooledConnections 信息:HH000115:休眠连接池大小:1(最小值=1) 2016年5月27日上午6:39:19 org.hibernate.dialogue.dialogue 信息:HH000400:使用方言:org.hibernate.dialogue.PostgreSqlDialogue 2016年5月27日上午6:39:19 org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl UseContextAllobCreation 信息:HH000424:当createClob()方法引发错误时禁用上下文LOB创建:java.lang.reflect.InvocationTargetException 2016年5月27日上午6:39:19 org.hibernate.type.BasicTypeRegistry注册表 信息:hh000270:类型注册[java.util.UUID]覆盖先前的:org.hibernate.Type。UUIDBinaryType@10aa41f2 2016年5月27日上午6:39:19 org.hibernate.envers.boot.internal.enverserviceimpl配置 信息:是否已启用Envers集成?:真的 2016年5月27日上午6:39:20 org.hibernate.search.engine.Version 信息:HSEARCH000034:Hibernate搜索5.5.2.Final 2016年5月27日上午6:39:20 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl 停止 信息:HHH10001008:清理连接池[jdbc:p]ostgresql://localhost:5432/hibernatedb] 线程“main”java.lang.NoSuchMethodError中出现异常:org.apache.lucene.index.IndexWriterConfig.setWriteLockTimeout(J)Lorg/apache/lucene/index/IndexWriterConfig; 在org.hibernate.search.store.spi.DirectoryHelper.initializeIndexIfNeeded(DirectoryHelper.java:57)上 位于org.hibernate.search.store.impl.DirectoryProviderHelper.createFSIndex(DirectoryProviderHelper.java:128) 位于org.hibernate.search.store.impl.FSDirectoryProvider.initialize(FSDirectoryProvider.java:53) 在org.hibernate.search.store.spi.BaseDirectoryProviderService.initialize(BaseDirectoryProviderService.java:64) 位于org.hibernate.search.store.spi.BaseDirectoryProviderService.create(BaseDirectoryProviderService.java:52) 在org.hibernate.search.indexes.spi.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:230) 位于org.hibernate.search.index.spi.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:90) 在org.hibernate.search.index.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:256)上 在org.hibernate.search.index.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:513) 在org.hibernate.search.index.impl.IndexManagerHolder.createIndexManagers(IndexManagerHolder.java:482) 在org.hibernate.search.indexs.impl.IndexManagerHolder.buildEntityIndexBinding(IndexManagerHolder.java:91) 位于org.hibernate.search.spi.SearchIntegratorBuilder.initDocumentBuilders(SearchIntegratorBuilder.java:358) 位于org.hibernate.search.spi.SearchIntegratorBuilder.buildNewSearchFactory(SearchIntegratorBuilder.java:199) 位于org.hibernate.search.spi.SearchIntegratorBuilder.buildSearchIntegrator(SearchIntegratorBuilder.java:117) 位于org.hibernate.search.hcore.impl.HibernateSearchSessionFactoryObserver.sessionFactoryCreated(HibernateSearchSessionFactoryObserver.java:75) 位于org.hibernate.internal.SessionFactoryObserverChain.sessionFactoryCreated(SessionFactoryObserverChain.java:35) 位于org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:520) 位于org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:465) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708) 位于com.domain.java.HibernateTest.main(HibernateTest.java:48)

通讯
<?xml version='1.0' encoding='utf-8'?>
<!--
  ~ Hibernate, Relational Persistence for Idiomatic Java
  ~
  ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
  ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
  -->
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <!-- <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
                    <property name="connection.url">jdbc:hsqldb:hsql://localhost/TestDB</property> -->


        <!-- Echo all executed SQL to stdout -->
        <!--  >property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <property name="hibernate.search.default.directory_provider">filesystem</property>
    -->
        <!--
         < Enable Hibernate's automatic session context management >
        <property name="current_session_context_class">thread</property>

        <property name="cache.use_query_cache">true</property>
        <property name="cache.use_second_level_cache">true</property>
        <property name="cache.use_structured_entries">true</property>
        <property name="cache.region.factory_class">org.hibernate.cache.EhCacheRegionFactory</property>
        <property name="net.sf.ehcache.configurationResourceName">/hibernate-config/ehcache.xml</property>

          mapping resource="hibernate-config/domain/Event.hbm.xml"/>
        <mapping resource="hibernate-config/domain/Person.hbm.xml"/>
        <mapping resource="hibernate-config/domain/PhoneNumber.hbm.xml"/>
        <mapping resource="hibernate-config/domain/Account.hbm.xml"/>
        <mapping resource="hibernate-config/domain/HolidayCalendar.hbm.xml"/>

        <mapping resource="hibernate-config/domain/Item.hbm.xml"/-->
    <!--  
       <mapping class="com.domain.java.TempFile"/>
      org.hibernate.search.store.impl.RAMDirectoryProvider
-->
<!-- Would set this in production application. Index stored on disk. -->

<property name="hibernate.search.default.directory_provider">
    org.hibernate.search.store.impl.FSDirectoryProvider
</property>
<property name="hibernate.search.default.indexBase">c:\aatemp\lucene\indexes</property>


    </session-factory>

</hibernate-configuration>
######################
### Query Language ###
######################

## define query language constants / function names

hibernate.query.substitutions yes 'Y', no 'N'


## select the classic query parser

#hibernate.query.factory_class org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory



#################
### Platforms ###
#################

## JNDI Datasource

#hibernate.connection.datasource jdbc/test
#hibernate.connection.username db2
#hibernate.connection.password db2


## PostgreSQL

hibernate.dialect org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class org.postgresql.Driver
hibernate.connection.url jdbc:postgresql://localhost:5432/hibernatedb
hibernate.connection.username postgres
hibernate.connection.password xxxxxxxx
hibernate.hbm2ddl.auto=update
show_sql=true


#Lucene

hibernate.search.default.directory_provider filesystem
hibernate.search.default.indexBase c:/var/lucene/indexes
hibernate.search.default.locking_strategy simple