如何使用Xodus删除实体类型?

时间:2018-09-17 20:30:58

标签: java xodus

这是我的代码,用于删除给定类型的所有实体:

@Override public boolean deleteEntities(String instance, final String storeName) { final boolean[] success = {false}; final PersistentEntityStore entityStore = manager.getPersistentEntityStore(xodusRoot, instance); try { entityStore.executeInTransaction(new StoreTransactionalExecutable() { @Override public void execute(@NotNull final StoreTransaction txn) { EntityIterable result = txn.getAll(storeName); final boolean[] hasError = {false}; for(Entity entity : result) { if(!entity.delete()) { hasError[0] = true; } } success[0] = !hasError[0]; } }); } finally { ////entityStore.close(); } return success[0]; }

问题:

  • 这是删除给定实体类型的所有现有实体的正确方法吗?
  • 执行此方法时,确实删除了所有实体,但是Enity类型在那里,如何正确删除一个Enity类型?

1 个答案:

答案 0 :(得分:1)

PersistentEntityStore#renameEntityType重命名实体类型作为公共api的一部分。要完全删除实体类型,可以使用PersistentEntityStoreImpl#deleteEntityType。它不是PersistentEntityStore api的一部分,但方法是公共的,您可以使用它。

此外,在删除实体类型时,请不要忘记还需要清除所有指向该类型实体的链接点。