My code was working fine, creating a resource and later read from it..
Dataset dataset = TDBFactory.createDataset(TDB_PATH);
dataset.begin(ReadWrite.WRITE);
model = dataset.getDefaultModel();
String uid = generateUUID();
Resource user = model.createResource(BASE_URI + RES_PREFIX_USER + uid)
.addProperty(PROP_HAS_CHECKIN, model.createSeq(BASE_URI + RES_PREFIX_REC +
uid))
.addProperty(FOAF.mbox, email)
.addProperty(PROP_UUID, uid);
dataset.commit();
model.close();
dataset.end();
String uid = user.getProperty(MobiSosCore.PROP_UUID).getString();
However, after I changed the way I retrieve dataset to be
Dataset baseDataset = TDBFactory.createDataset(TDB_PATH);
EntityDefinition entDef = new EntityDefinition("entityField", "geoField");
dataset = SpatialDatasetFactory.createLucene(baseDataset, INDEX_DIR,
entDef);
The program throw out ClosedException at the call of getProperty().
It seems to me that after base dataset is joined with spatial index, the
retrieved resource cannot be read outside a transaction block.
Please help. I want to know what underlying mechanisms that I should
understand to get my code right?
Art