Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Eladmin
Commits
b46d50fe
Commit
b46d50fe
authored
Jul 05, 2023
by
Zheng Jie
Browse files
修复关联查询出现重复的join:
https://github.com/elunez/eladmin/issues/655
close
https://github.com/elunez/eladmin/issues/655
parent
cf3655ad
Changes
1
Hide whitespace changes
Inline
Side-by-side
eladmin-common/src/main/java/me/zhengjie/utils/QueryHelp.java
View file @
b46d50fe
...
...
@@ -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
())
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment