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

Reply via email to