提交 30f33835 编写于 作者: O o2sword

修复query删除时未删除table和statement

上级 85f4d1b5
...@@ -25,13 +25,17 @@ import com.x.query.core.entity.Stat; ...@@ -25,13 +25,17 @@ import com.x.query.core.entity.Stat;
import com.x.query.core.entity.Stat_; import com.x.query.core.entity.Stat_;
import com.x.query.core.entity.View; import com.x.query.core.entity.View;
import com.x.query.core.entity.View_; import com.x.query.core.entity.View_;
import com.x.query.core.entity.schema.Statement;
import com.x.query.core.entity.schema.Statement_;
import com.x.query.core.entity.schema.Table;
import com.x.query.core.entity.schema.Table_;
class ActionDelete extends BaseAction { class ActionDelete extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionDelete.class); private static Logger logger = LoggerFactory.getLogger(ActionDelete.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception { ActionResult<Wo> execute(EffectivePerson effectivePerson, String flag) throws Exception {
logger.debug(effectivePerson, "flag:{}.", flag); logger.print( "{} delete query flag:{}.",effectivePerson.getDistinguishedName(), flag);
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<Wo> result = new ActionResult<>(); ActionResult<Wo> result = new ActionResult<>();
Business business = new Business(emc); Business business = new Business(emc);
...@@ -58,6 +62,16 @@ class ActionDelete extends BaseAction { ...@@ -58,6 +62,16 @@ class ActionDelete extends BaseAction {
emc.remove(_o, CheckRemoveType.all); emc.remove(_o, CheckRemoveType.all);
} }
emc.commit(); emc.commit();
emc.beginTransaction(Table.class);
for (Table _o : this.listTable(business, query)) {
emc.remove(_o, CheckRemoveType.all);
}
emc.commit();
emc.beginTransaction(Statement.class);
for (Statement _o : this.listStatement(business, query)) {
emc.remove(_o, CheckRemoveType.all);
}
emc.commit();
emc.beginTransaction(Query.class); emc.beginTransaction(Query.class);
emc.remove(query, CheckRemoveType.all); emc.remove(query, CheckRemoveType.all);
emc.commit(); emc.commit();
...@@ -65,6 +79,8 @@ class ActionDelete extends BaseAction { ...@@ -65,6 +79,8 @@ class ActionDelete extends BaseAction {
CacheManager.notify(Stat.class); CacheManager.notify(Stat.class);
CacheManager.notify(Reveal.class); CacheManager.notify(Reveal.class);
CacheManager.notify(Query.class); CacheManager.notify(Query.class);
CacheManager.notify(Table.class);
CacheManager.notify(Statement.class);
Wo wo = new Wo(); Wo wo = new Wo();
wo.setId(query.getId()); wo.setId(query.getId());
result.setData(wo); result.setData(wo);
...@@ -102,6 +118,26 @@ class ActionDelete extends BaseAction { ...@@ -102,6 +118,26 @@ class ActionDelete extends BaseAction {
return os; return os;
} }
private List<Table> listTable(Business business, Query query) throws Exception {
EntityManager em = business.entityManagerContainer().get(Table.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Table> cq = cb.createQuery(Table.class);
Root<Table> root = cq.from(Table.class);
Predicate p = cb.equal(root.get(Table_.query), query.getId());
List<Table> os = em.createQuery(cq.select(root).where(p)).getResultList();
return os;
}
private List<Statement> listStatement(Business business, Query query) throws Exception {
EntityManager em = business.entityManagerContainer().get(Table.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Statement> cq = cb.createQuery(Statement.class);
Root<Statement> root = cq.from(Statement.class);
Predicate p = cb.equal(root.get(Statement_.query), query.getId());
List<Statement> os = em.createQuery(cq.select(root).where(p)).getResultList();
return os;
}
public static class Wo extends WoId { public static class Wo extends WoId {
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册