Database clogin开放游标java berkeley db

Database clogin开放游标java berkeley db,database,cursor,berkeley-db-je,Database,Cursor,Berkeley Db Je,我在关闭berkeley db上的一些商店时遇到了一个例外,即打开了cursos: Exception in thread "main" java.lang.IllegalStateException: Database still has 1 open cursors while trying to close. at com.sleepycat.je.Database.closeInternal(Database.java:462) at com.sleepycat.je.D

我在关闭berkeley db上的一些商店时遇到了一个例外,即打开了cursos:

Exception in thread "main" java.lang.IllegalStateException: Database still has 1 open cursors while trying to close.
    at com.sleepycat.je.Database.closeInternal(Database.java:462)
    at com.sleepycat.je.Database.close(Database.java:314)
    at com.sleepycat.persist.impl.Store.closeDb(Store.java:1449)
    at com.sleepycat.persist.impl.Store.close(Store.java:1058)
    at com.sleepycat.persist.EntityStore.close(EntityStore.java:626)
此错误发生在“myStore.close()上”:

但我没有手动打开任何光标

我已经查找了这个错误,但没有找到任何需要执行的特殊操作(因为我没有手动打开光标)

所以我想我在打开数据库时做错了什么。我在开店时做什么:

myStore = new EntityStore(env, "StoreTest", storeConfig);
PrimaryIndex<Long, MYClass> myPrimaryIndex = myStore.getPrimaryIndex(Long.class, MyClass.class);
myStore=newentitystore(env,“StoreTest”,storeConfig);
PrimaryIndex myPrimaryIndex=myStore.getPrimaryIndex(Long.class,MyClass.class);

再次声明:我没有手动打开任何游标。

对EntityIndex.entities()的任何调用都会打开游标,无论您是否将其分配给变量。因此,请确保将其分配给EntityCursor对象,然后调用其close()方法,如下所示:

EntityCursor<Employee> cursor = primaryIndex.entities();
try {
         ...
} finally {
    cursor.close();
}
EntityCursor cursor=primaryIndex.entities();
试一试{
...
}最后{
cursor.close();
}
我也遇到过类似的问题,这就是解决方案,也发布在OTN论坛上:

EntityCursor<Employee> cursor = primaryIndex.entities();
try {
         ...
} finally {
    cursor.close();
}