提交 690258b2 编写于 作者: O o2null

Merge branch 'fix/oralce数据库环境数据中心查询服务查询总数不准确的问题' into 'wrdp'

[数据中心]修复oracle数据库环境查询服务查询总数(select count(*))不准确的问题

See merge request o2oa/o2oa!2530
......@@ -33,6 +33,8 @@ import com.x.query.core.express.statement.Runtime;
class ActionExecute extends BaseAction {
private final static String[] pageKeys = { "GROUP BY", " COUNT(" };
ActionResult<Object> execute(EffectivePerson effectivePerson, String flag, Integer page, Integer size,
JsonElement jsonElement) throws Exception {
......@@ -87,8 +89,10 @@ class ActionExecute extends BaseAction {
}
}
if (StringUtils.equalsIgnoreCase(statement.getType(), Statement.TYPE_SELECT)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(text)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
} else {
business.entityManagerContainer().beginTransaction(cls);
......@@ -116,8 +120,10 @@ class ActionExecute extends BaseAction {
}
}
if (StringUtils.equalsIgnoreCase(statement.getType(), Statement.TYPE_SELECT)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(statement.getData())) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
} else {
business.entityManagerContainer().beginTransaction(cls);
......@@ -127,6 +133,16 @@ class ActionExecute extends BaseAction {
return data;
}
private boolean isPageSql(String sql){
sql = sql.toUpperCase().replaceAll("\\s{1,}", " ");
for (String key : pageKeys) {
if (sql.indexOf(key) > -1) {
return false;
}
}
return true;
}
private Class<? extends JpaObject> clazz(Business business, Statement statement) throws Exception {
Class<? extends JpaObject> cls = null;
if (StringUtils.equals(Statement.ENTITYCATEGORY_OFFICIAL, statement.getEntityCategory())
......@@ -173,4 +189,4 @@ class ActionExecute extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -37,6 +37,7 @@ class ActionExecuteV2 extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionExecuteV2.class);
private final static String[] pageKeys = { "GROUP BY", " COUNT(" };
private final static String JOIN_KEY = " JOIN ";
private final static String JOIN_ON_KEY = " ON ";
......@@ -137,8 +138,10 @@ class ActionExecuteV2 extends BaseAction {
if(Statement.MODE_COUNT.equals(mode)) {
data = query.getSingleResult();
}else{
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(jpql)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
}
} else {
......@@ -181,8 +184,10 @@ class ActionExecuteV2 extends BaseAction {
if(Statement.MODE_COUNT.equals(mode)) {
data = query.getSingleResult();
}else{
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(jpql)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
}
} else {
......@@ -193,6 +198,16 @@ class ActionExecuteV2 extends BaseAction {
return data;
}
private boolean isPageSql(String sql){
sql = sql.toUpperCase().replaceAll("\\s{1,}", " ");
for (String key : pageKeys) {
if (sql.indexOf(key) > -1) {
return false;
}
}
return true;
}
private Class<? extends JpaObject> clazz(Business business, Statement statement) throws Exception {
Class<? extends JpaObject> cls = null;
if (StringUtils.equals(Statement.ENTITYCATEGORY_OFFICIAL, statement.getEntityCategory())
......@@ -252,4 +267,4 @@ class ActionExecuteV2 extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -36,6 +36,8 @@ import com.x.query.core.express.statement.Runtime;
class ActionExecute extends BaseAction {
private final static String[] pageKeys = { "GROUP BY", " COUNT(" };
ActionResult<Object> execute(EffectivePerson effectivePerson, String flag, Integer page, Integer size,
JsonElement jsonElement) throws Exception {
......@@ -119,8 +121,10 @@ class ActionExecute extends BaseAction {
}
}
if (StringUtils.equalsIgnoreCase(statement.getType(), Statement.TYPE_SELECT)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(text)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
} else {
business.entityManagerContainer().beginTransaction(cls);
......@@ -151,8 +155,10 @@ class ActionExecute extends BaseAction {
}
}
if (StringUtils.equalsIgnoreCase(statement.getType(), Statement.TYPE_SELECT)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(statement.getData())) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
} else {
business.entityManagerContainer().beginTransaction(cls);
......@@ -163,6 +169,16 @@ class ActionExecute extends BaseAction {
return data;
}
private boolean isPageSql(String sql){
sql = sql.toUpperCase().replaceAll("\\s{1,}", " ");
for (String key : pageKeys) {
if (sql.indexOf(key) > -1) {
return false;
}
}
return true;
}
@SuppressWarnings("unchecked")
private Class<? extends JpaObject> clazz(Business business, Statement statement) throws Exception {
Class<? extends JpaObject> cls = null;
......@@ -210,4 +226,4 @@ class ActionExecute extends BaseAction {
}
}
\ No newline at end of file
}
......@@ -44,6 +44,7 @@ class ActionExecuteV2 extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionExecuteV2.class);
private final static String[] keys = { "group by", "GROUP BY", "order by", "ORDER BY", "limit", "LIMIT" };
private final static String[] pageKeys = { "GROUP BY", " COUNT(" };
private final static String JOIN_KEY = " JOIN ";
private final static String JOIN_ON_KEY = " ON ";
......@@ -146,8 +147,10 @@ class ActionExecuteV2 extends BaseAction {
if (Statement.MODE_COUNT.equals(mode)) {
data = query.getSingleResult();
} else {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(jpql)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
}
} else {
......@@ -194,8 +197,10 @@ class ActionExecuteV2 extends BaseAction {
if (Statement.MODE_COUNT.equals(mode)) {
data = query.getSingleResult();
} else {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
if(isPageSql(jpql)) {
query.setFirstResult((runtime.page - 1) * runtime.size);
query.setMaxResults(runtime.size);
}
data = query.getResultList();
}
} else {
......@@ -207,6 +212,16 @@ class ActionExecuteV2 extends BaseAction {
return data;
}
private boolean isPageSql(String sql){
sql = sql.toUpperCase().replaceAll("\\s{1,}", " ");
for (String key : pageKeys) {
if (sql.indexOf(key) > -1) {
return false;
}
}
return true;
}
private Class<? extends JpaObject> clazz(Business business, Statement statement) throws Exception {
Class<? extends JpaObject> cls = null;
if (StringUtils.equals(Statement.ENTITYCATEGORY_OFFICIAL, statement.getEntityCategory())
......@@ -356,4 +371,4 @@ class ActionExecuteV2 extends BaseAction {
}
}
}
\ No newline at end of file
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册