mirror of https://github.com/elunez/eladmin
修复关联查询出现重复的join:https://github.com/elunez/eladmin/issues/655
close https://github.com/elunez/eladmin/issues/655pull/805/head
parent
cf3655adf4
commit
b46d50fef1
|
@ -53,6 +53,7 @@ public class QueryHelp {
|
|||
}
|
||||
}
|
||||
try {
|
||||
Map<String, Join> joinKey = new HashMap<>();
|
||||
List<Field> fields = getAllFields(query.getClass(), new ArrayList<>());
|
||||
for (Field field : fields) {
|
||||
boolean accessible = field.isAccessible();
|
||||
|
@ -75,40 +76,43 @@ public class QueryHelp {
|
|||
String[] blurrys = blurry.split(",");
|
||||
List<Predicate> orPredicate = new ArrayList<>();
|
||||
for (String s : blurrys) {
|
||||
orPredicate.add(cb.like(root.get(s)
|
||||
.as(String.class), "%" + val.toString() + "%"));
|
||||
orPredicate.add(cb.like(root.get(s).as(String.class), "%" + val.toString() + "%"));
|
||||
}
|
||||
Predicate[] p = new Predicate[orPredicate.size()];
|
||||
list.add(cb.or(orPredicate.toArray(p)));
|
||||
continue;
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(joinName)) {
|
||||
String[] joinNames = joinName.split(">");
|
||||
for (String name : joinNames) {
|
||||
switch (q.join()) {
|
||||
case LEFT:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.LEFT);
|
||||
} else {
|
||||
join = root.join(name, JoinType.LEFT);
|
||||
}
|
||||
break;
|
||||
case RIGHT:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.RIGHT);
|
||||
} else {
|
||||
join = root.join(name, JoinType.RIGHT);
|
||||
}
|
||||
break;
|
||||
case INNER:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.INNER);
|
||||
} else {
|
||||
join = root.join(name, JoinType.INNER);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
join = joinKey.get(joinName);
|
||||
if(join == null){
|
||||
String[] joinNames = joinName.split(">");
|
||||
for (String name : joinNames) {
|
||||
switch (q.join()) {
|
||||
case LEFT:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.LEFT);
|
||||
} else {
|
||||
join = root.join(name, JoinType.LEFT);
|
||||
}
|
||||
break;
|
||||
case RIGHT:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.RIGHT);
|
||||
} else {
|
||||
join = root.join(name, JoinType.RIGHT);
|
||||
}
|
||||
break;
|
||||
case INNER:
|
||||
if(ObjectUtil.isNotNull(join) && ObjectUtil.isNotNull(val)){
|
||||
join = join.join(name, JoinType.INNER);
|
||||
} else {
|
||||
join = root.join(name, JoinType.INNER);
|
||||
}
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
joinKey.put(joinName, join);
|
||||
}
|
||||
}
|
||||
switch (q.type()) {
|
||||
|
|
Loading…
Reference in New Issue