Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
如何将db4o与Spring一起使用来配置索引?_Spring_Indexing_Db4o - Fatal编程技术网

如何将db4o与Spring一起使用来配置索引?

如何将db4o与Spring一起使用来配置索引?,spring,indexing,db4o,Spring,Indexing,Db4o,我目前正在评估Spring-db4o集成。声明性事务支持以及易于提供声明性配置给我留下了深刻的印象 不幸的是,我很难想出如何在特定字段上创建索引。Spring正在tomcat服务器启动期间准备db。这是我的春季作品: <bean id="objectContainer" class="org.springmodules.db4o.ObjectContainerFactoryBean"> <property name="configuration" ref="db4oConf

我目前正在评估Spring-db4o集成。声明性事务支持以及易于提供声明性配置给我留下了深刻的印象

不幸的是,我很难想出如何在特定字段上创建索引。Spring正在tomcat服务器启动期间准备db。这是我的春季作品:

<bean id="objectContainer" class="org.springmodules.db4o.ObjectContainerFactoryBean">
  <property name="configuration" ref="db4oConfiguration" />
  <property name="databaseFile" value="/WEB-INF/repo/taxonomy.db4o" />
</bean>
<bean id="db4oConfiguration" class="org.springmodules.db4o.ConfigurationFactoryBean">
  <property name="updateDepth" value="5" />
  <property name="configurationCreationMode" value="NEW" />
</bean>
<bean id="db4otemplate" class="org.springmodules.db4o.Db4oTemplate">
  <constructor-arg ref="objectContainer" />
</bean>
我在这个表中插入了大约6000行,然后使用SODA查询根据键检索一行。但是表现很差。为了验证索引是否已正确应用,我运行了以下程序:

private static void indexTest(ObjectContainer db){
   for (StoredClass storedClass : db.ext().storedClasses()) {
       for (StoredField field : storedClass.getStoredFields()) {
          if(field.hasIndex()){
              System.out.println("Field "+field.getName()+" is indexed! ");
          }else{
              System.out.println("Field "+field.getName()+" isn't indexed! ");
          }
       }
   }
}
不幸的是,结果显示没有字段被索引

在类似的上下文中,在OME浏览器中,我看到有一个选项可以在每个类的字段上创建索引。如果我将索引设置为true并保存,它似乎将更改应用于db4o。但是,如果在db4o文件上运行这个示例测试,它不会显示任何索引


对此,我们将非常感谢您的指点。

不幸的是,我对db4o的spring扩展不太了解

但是,Db4o.configure()内容已被弃用,其工作方式与早期版本不同。在早期版本中,有一个全局db4o配置。不是,这个配置已经不存在了。调用Db4o.configure()不会更改运行对象容器的配置

现在,您可以尝试在一个正在运行的容器周围执行此操作:

container.ext().configure().objectClass(com.test.Metadata.class).objectField("id").indexed(true); 

这样可以更改正在运行的对象容器的配置。请注意,更改正在运行的对象容器的配置可能会导致危险的副作用,只能作为最后手段使用。

不幸的是,我对db4o的spring扩展不太了解

但是,Db4o.configure()内容已被弃用,其工作方式与早期版本不同。在早期版本中,有一个全局db4o配置。不是,这个配置已经不存在了。调用Db4o.configure()不会更改运行对象容器的配置

现在,您可以尝试在一个正在运行的容器周围执行此操作:

container.ext().configure().objectClass(com.test.Metadata.class).objectField("id").indexed(true); 
这样可以更改正在运行的对象容器的配置。请注意,更改正在运行的对象容器的配置可能会导致危险的副作用,只能作为最后手段使用