先上mapper层代码,用的是mybatis注解
@Insert("<script>" +
"insert into attendance_info(id,dingding_user_id,attendance_type,column_id,duration1,duration_unit,add_time,add_user,update_time,dept_id,update_user) values" +
"<foreach collection='list' item='atten' index='index' separator=',' >" +
"(#{atten.id},#{atten.dingdingUserId},#{atten.attendanceType},#{atten.columnId},#{atten.duration1},#{atten.durationUnit},#{atten.addTime},#{atten.addUser},#{atten.updateTime},#{atten.deptId},#{atten.updateUser})" +
"</foreach>" +
"</script>")
int addBatch(@Param("list") List<AttendanceInfo> list);
以下是报错信息
Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
The error may involve com.mepu.filemanage.manager.mapper.attendance.AttendanceMapper.addBatch-Inline
The error occurred while setting parameters
SQL: insert into attendance_info(id,dingding_user_id,attendance_type,column_id,duration1,duration_unit,add_time,add_user,update_time,dept_id,update_user) values
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1(String)
2020-03-18 17:40:42.186 DEBUG 11344 — [io-18081-exec-1] c.m.f.m.m.s.S.insert : <== Updates: 1
2020-03-18 17:40:42.193 DEBUG 11344 — [io-18081-exec-1] c.m.f.m.m.s.S.insert!selectKey : > Executing: SELECT LAST_INSERT_ID()
2020-03-18 17:40:42.381 DEBUG 11344 — [io-18081-exec-1] c.m.f.m.m.s.S.insert!selectKey : < Total: 1
2020-03-18 17:40:42.405 ERROR 11344 — [io-18081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException:
Error updating database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
The error may involve com.mepu.filemanage.manager.mapper.attendance.AttendanceMapper.addBatch-Inline
The error occurred while setting parameters
SQL: insert into attendance_info(id,dingding_user_id,attendance_type,column_id,duration1,duration_unit,add_time,add_user,update_time,dept_id,update_user) values
Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1] with root cause
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 1
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:974) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:391) ~[mysql-connector-java-8.0.13.jar:8.0.13]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3051) ~[druid-1.1.9.jar:1.1.9]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440) ~[druid-1.1.9.jar:1.1.9]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:3049) ~[druid-1.1.9.jar:1.1.9]
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:167) ~[druid-1.1.9.jar:1.1.9]
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:498) ~[druid-1.1.9.jar:1.1.9]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59) ~[mybatis-3.4.6.jar:3.4.6]
at com.sun.proxy.
P
r
o
x
y
228.
e
x
e
c
u
t
e
(
U
n
k
n
o
w
n
S
o
u
r
c
e
)
[
n
a
:
n
a
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
e
x
e
c
u
t
o
r
.
s
t
a
t
e
m
e
n
t
.
P
r
e
p
a
r
e
d
S
t
a
t
e
m
e
n
t
H
a
n
d
l
e
r
.
u
p
d
a
t
e
(
P
r
e
p
a
r
e
d
S
t
a
t
e
m
e
n
t
H
a
n
d
l
e
r
.
j
a
v
a
:
46
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
e
x
e
c
u
t
o
r
.
s
t
a
t
e
m
e
n
t
.
R
o
u
t
i
n
g
S
t
a
t
e
m
e
n
t
H
a
n
d
l
e
r
.
u
p
d
a
t
e
(
R
o
u
t
i
n
g
S
t
a
t
e
m
e
n
t
H
a
n
d
l
e
r
.
j
a
v
a
:
74
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
e
x
e
c
u
t
o
r
.
S
i
m
p
l
e
E
x
e
c
u
t
o
r
.
d
o
U
p
d
a
t
e
(
S
i
m
p
l
e
E
x
e
c
u
t
o
r
.
j
a
v
a
:
50
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
e
x
e
c
u
t
o
r
.
B
a
s
e
E
x
e
c
u
t
o
r
.
u
p
d
a
t
e
(
B
a
s
e
E
x
e
c
u
t
o
r
.
j
a
v
a
:
117
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
e
x
e
c
u
t
o
r
.
C
a
c
h
i
n
g
E
x
e
c
u
t
o
r
.
u
p
d
a
t
e
(
C
a
c
h
i
n
g
E
x
e
c
u
t
o
r
.
j
a
v
a
:
76
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
0
(
N
a
t
i
v
e
M
e
t
h
o
d
)
[
n
a
:
1.8.
0
1
81
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
(
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
62
)
[
n
a
:
1.8.
0
1
81
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
D
e
l
e
g
a
t
i
n
g
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
(
D
e
l
e
g
a
t
i
n
g
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
43
)
[
n
a
:
1.8.
0
1
81
]
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
M
e
t
h
o
d
.
i
n
v
o
k
e
(
M
e
t
h
o
d
.
j
a
v
a
:
498
)
[
n
a
:
1.8.
0
1
81
]
a
t
o
r
g
.
a
p
a
c
h
e
.
i
b
a
t
i
s
.
p
l
u
g
i
n
.
P
l
u
g
i
n
.
i
n
v
o
k
e
(
P
l
u
g
i
n
.
j
a
v
a
:
63
)
[
m
y
b
a
t
i
s
−
3.4.6.
j
a
r
:
3.4.6
]
a
t
c
o
m
.
s
u
n
.
p
r
o
x
y
.
Proxy228.execute(Unknown Source) ~[na:na] at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46) ~[mybatis-3.4.6.jar:3.4.6] at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74) ~[mybatis-3.4.6.jar:3.4.6] at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) ~[mybatis-3.4.6.jar:3.4.6] at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) ~[mybatis-3.4.6.jar:3.4.6] at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) ~[mybatis-3.4.6.jar:3.4.6] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181] at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) ~[mybatis-3.4.6.jar:3.4.6] at com.sun.proxy.
Proxy228.execute(UnknownSource) [na:na]atorg.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:46) [mybatis−3.4.6.jar:3.4.6]atorg.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74) [mybatis−3.4.6.jar:3.4.6]atorg.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) [mybatis−3.4.6.jar:3.4.6]atorg.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) [mybatis−3.4.6.jar:3.4.6]atorg.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) [mybatis−3.4.6.jar:3.4.6]atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) [na:1.8.0181]atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [na:1.8.0181]atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [na:1.8.0181]atjava.lang.reflect.Method.invoke(Method.java:498) [na:1.8.0181]atorg.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) [mybatis−3.4.6.jar:3.4.6]atcom.sun.proxy.Proxy226.update(Unknown Source) ~[na:na]
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:185) ~[mybatis-3.4.6.jar:3.4.6]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
at org.mybatis.spring.SqlSessionTemplate
S
q
l
S
e
s
s
i
o
n
I
n
t
e
r
c
e
p
t
o
r
.
i
n
v
o
k
e
(
S
q
l
S
e
s
s
i
o
n
T
e
m
p
l
a
t
e
.
j
a
v
a
:
433
)
[
m
y
b
a
t
i
s
−
s
p
r
i
n
g
−
1.3.2.
j
a
r
:
1.3.2
]
a
t
c
o
m
.
s
u
n
.
p
r
o
x
y
.
SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) ~[mybatis-spring-1.3.2.jar:1.3.2] at com.sun.proxy.
SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433) [mybatis−spring−1.3.2.jar:1.3.2]atcom.sun.proxy.Proxy94.insert(Unknown Source) ~[na:na]
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:278) ~[mybatis-spring-1.3.2.jar:1.3.2]
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:58) ~[mybatis-3.4.6.jar:3.4.6]
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59) ~[mybatis-3.4.6.jar:3.4.6]
at com.sun.proxy.
P
r
o
x
y
116.
a
d
d
B
a
t
c
h
(
U
n
k
n
o
w
n
S
o
u
r
c
e
)
[
n
a
:
n
a
]
a
t
c
o
m
.
m
e
p
u
.
f
i
l
e
m
a
n
a
g
e
.
m
a
n
a
g
e
r
.
S
e
r
v
i
c
e
.
a
t
t
e
n
d
a
n
c
e
.
i
m
p
l
.
A
t
t
e
n
d
a
n
c
e
S
e
r
v
i
c
e
I
m
p
l
.
a
d
d
F
r
o
m
D
i
n
g
d
i
n
g
(
A
t
t
e
n
d
a
n
c
e
S
e
r
v
i
c
e
I
m
p
l
.
j
a
v
a
:
108
)
[
c
l
a
s
s
e
s
/
:
n
a
]
a
t
c
o
m
.
m
e
p
u
.
f
i
l
e
m
a
n
a
g
e
.
m
a
n
a
g
e
r
.
c
o
n
t
r
o
l
l
e
r
.
a
t
t
e
n
d
a
n
c
e
.
A
t
t
e
n
D
a
n
c
e
C
o
n
t
r
o
l
l
e
r
.
g
e
t
D
a
t
a
F
r
o
m
D
i
n
g
d
i
n
g
(
A
t
t
e
n
D
a
n
c
e
C
o
n
t
r
o
l
l
e
r
.
j
a
v
a
:
36
)
[
c
l
a
s
s
e
s
/
:
n
a
]
a
t
c
o
m
.
m
e
p
u
.
f
i
l
e
m
a
n
a
g
e
.
m
a
n
a
g
e
r
.
c
o
n
t
r
o
l
l
e
r
.
a
t
t
e
n
d
a
n
c
e
.
A
t
t
e
n
D
a
n
c
e
C
o
n
t
r
o
l
l
e
r
Proxy116.addBatch(Unknown Source) ~[na:na] at com.mepu.filemanage.manager.Service.attendance.impl.AttendanceServiceImpl.addFromDingding(AttendanceServiceImpl.java:108) ~[classes/:na] at com.mepu.filemanage.manager.controller.attendance.AttenDanceController.getDataFromDingding(AttenDanceController.java:36) ~[classes/:na] at com.mepu.filemanage.manager.controller.attendance.AttenDanceController
Proxy116.addBatch(UnknownSource) [na:na]atcom.mepu.filemanage.manager.Service.attendance.impl.AttendanceServiceImpl.addFromDingding(AttendanceServiceImpl.java:108) [classes/:na]atcom.mepu.filemanage.manager.controller.attendance.AttenDanceController.getDataFromDingding(AttenDanceController.java:36) [classes/:na]atcom.mepu.filemanage.manager.controller.attendance.AttenDanceController
F
a
s
t
C
l
a
s
s
B
y
S
p
r
i
n
g
C
G
L
I
B
FastClassBySpringCGLIB
FastClassBySpringCGLIB
2
b
90
d
802.
i
n
v
o
k
e
(
<
g
e
n
e
r
a
t
e
d
>
)
[
c
l
a
s
s
e
s
/
:
n
a
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
c
g
l
i
b
.
p
r
o
x
y
.
M
e
t
h
o
d
P
r
o
x
y
.
i
n
v
o
k
e
(
M
e
t
h
o
d
P
r
o
x
y
.
j
a
v
a
:
218
)
[
s
p
r
i
n
g
−
c
o
r
e
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
a
o
p
.
f
r
a
m
e
w
o
r
k
.
C
g
l
i
b
A
o
p
P
r
o
x
y
2b90d802.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.aop.framework.CglibAopProxy
2b90d802.invoke(<generated>) [classes/:na]atorg.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring−core−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.aop.framework.CglibAopProxyCglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at com.mepu.filemanage.manager.aop.aspect.SystemLogAspect.around(SystemLogAspect.java:128) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:62) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE]
at org.springframework.aop.framework.CglibAopProxy
D
y
n
a
m
i
c
A
d
v
i
s
e
d
I
n
t
e
r
c
e
p
t
o
r
.
i
n
t
e
r
c
e
p
t
(
C
g
l
i
b
A
o
p
P
r
o
x
y
.
j
a
v
a
:
688
)
[
s
p
r
i
n
g
−
a
o
p
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
c
o
m
.
m
e
p
u
.
f
i
l
e
m
a
n
a
g
e
.
m
a
n
a
g
e
r
.
c
o
n
t
r
o
l
l
e
r
.
a
t
t
e
n
d
a
n
c
e
.
A
t
t
e
n
D
a
n
c
e
C
o
n
t
r
o
l
l
e
r
DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) ~[spring-aop-5.1.3.RELEASE.jar:5.1.3.RELEASE] at com.mepu.filemanage.manager.controller.attendance.AttenDanceController
DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring−aop−5.1.3.RELEASE.jar:5.1.3.RELEASE]atcom.mepu.filemanage.manager.controller.attendance.AttenDanceController
E
n
h
a
n
c
e
r
B
y
S
p
r
i
n
g
C
G
L
I
B
EnhancerBySpringCGLIB
EnhancerBySpringCGLIB
a
f
870
b
f
6.
g
e
t
D
a
t
a
F
r
o
m
D
i
n
g
d
i
n
g
(
<
g
e
n
e
r
a
t
e
d
>
)
[
c
l
a
s
s
e
s
/
:
n
a
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
0
(
N
a
t
i
v
e
M
e
t
h
o
d
)
[
n
a
:
1.8.
0
1
81
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
(
N
a
t
i
v
e
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
62
)
[
n
a
:
1.8.
0
1
81
]
a
t
s
u
n
.
r
e
f
l
e
c
t
.
D
e
l
e
g
a
t
i
n
g
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
i
n
v
o
k
e
(
D
e
l
e
g
a
t
i
n
g
M
e
t
h
o
d
A
c
c
e
s
s
o
r
I
m
p
l
.
j
a
v
a
:
43
)
[
n
a
:
1.8.
0
1
81
]
a
t
j
a
v
a
.
l
a
n
g
.
r
e
f
l
e
c
t
.
M
e
t
h
o
d
.
i
n
v
o
k
e
(
M
e
t
h
o
d
.
j
a
v
a
:
498
)
[
n
a
:
1.8.
0
1
81
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
m
e
t
h
o
d
.
s
u
p
p
o
r
t
.
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
d
o
I
n
v
o
k
e
(
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
j
a
v
a
:
189
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
m
e
t
h
o
d
.
s
u
p
p
o
r
t
.
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
i
n
v
o
k
e
F
o
r
R
e
q
u
e
s
t
(
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
j
a
v
a
:
138
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
m
v
c
.
m
e
t
h
o
d
.
a
n
n
o
t
a
t
i
o
n
.
S
e
r
v
l
e
t
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
i
n
v
o
k
e
A
n
d
H
a
n
d
l
e
(
S
e
r
v
l
e
t
I
n
v
o
c
a
b
l
e
H
a
n
d
l
e
r
M
e
t
h
o
d
.
j
a
v
a
:
102
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
m
v
c
.
m
e
t
h
o
d
.
a
n
n
o
t
a
t
i
o
n
.
R
e
q
u
e
s
t
M
a
p
p
i
n
g
H
a
n
d
l
e
r
A
d
a
p
t
e
r
.
i
n
v
o
k
e
H
a
n
d
l
e
r
M
e
t
h
o
d
(
R
e
q
u
e
s
t
M
a
p
p
i
n
g
H
a
n
d
l
e
r
A
d
a
p
t
e
r
.
j
a
v
a
:
895
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
m
v
c
.
m
e
t
h
o
d
.
a
n
n
o
t
a
t
i
o
n
.
R
e
q
u
e
s
t
M
a
p
p
i
n
g
H
a
n
d
l
e
r
A
d
a
p
t
e
r
.
h
a
n
d
l
e
I
n
t
e
r
n
a
l
(
R
e
q
u
e
s
t
M
a
p
p
i
n
g
H
a
n
d
l
e
r
A
d
a
p
t
e
r
.
j
a
v
a
:
800
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
m
v
c
.
m
e
t
h
o
d
.
A
b
s
t
r
a
c
t
H
a
n
d
l
e
r
M
e
t
h
o
d
A
d
a
p
t
e
r
.
h
a
n
d
l
e
(
A
b
s
t
r
a
c
t
H
a
n
d
l
e
r
M
e
t
h
o
d
A
d
a
p
t
e
r
.
j
a
v
a
:
87
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
D
i
s
p
a
t
c
h
e
r
S
e
r
v
l
e
t
.
d
o
D
i
s
p
a
t
c
h
(
D
i
s
p
a
t
c
h
e
r
S
e
r
v
l
e
t
.
j
a
v
a
:
1038
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
D
i
s
p
a
t
c
h
e
r
S
e
r
v
l
e
t
.
d
o
S
e
r
v
i
c
e
(
D
i
s
p
a
t
c
h
e
r
S
e
r
v
l
e
t
.
j
a
v
a
:
942
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
p
r
o
c
e
s
s
R
e
q
u
e
s
t
(
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
j
a
v
a
:
1005
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
d
o
P
o
s
t
(
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
j
a
v
a
:
908
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
j
a
v
a
x
.
s
e
r
v
l
e
t
.
h
t
t
p
.
H
t
t
p
S
e
r
v
l
e
t
.
s
e
r
v
i
c
e
(
H
t
t
p
S
e
r
v
l
e
t
.
j
a
v
a
:
660
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
s
e
r
v
l
e
t
.
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
s
e
r
v
i
c
e
(
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
j
a
v
a
:
882
)
[
s
p
r
i
n
g
−
w
e
b
m
v
c
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
j
a
v
a
x
.
s
e
r
v
l
e
t
.
h
t
t
p
.
H
t
t
p
S
e
r
v
l
e
t
.
s
e
r
v
i
c
e
(
H
t
t
p
S
e
r
v
l
e
t
.
j
a
v
a
:
741
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
i
n
t
e
r
n
a
l
D
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
231
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
d
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
166
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
t
o
m
c
a
t
.
w
e
b
s
o
c
k
e
t
.
s
e
r
v
e
r
.
W
s
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
(
W
s
F
i
l
t
e
r
.
j
a
v
a
:
53
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
w
e
b
s
o
c
k
e
t
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
i
n
t
e
r
n
a
l
D
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
193
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
d
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
166
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
c
o
m
.
a
l
i
b
a
b
a
.
d
r
u
i
d
.
s
u
p
p
o
r
t
.
h
t
t
p
.
W
e
b
S
t
a
t
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
(
W
e
b
S
t
a
t
F
i
l
t
e
r
.
j
a
v
a
:
123
)
[
d
r
u
i
d
−
1.1.9.
j
a
r
:
1.1.9
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
i
n
t
e
r
n
a
l
D
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
193
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
d
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
166
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
f
i
l
t
e
r
.
C
o
r
s
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
I
n
t
e
r
n
a
l
(
C
o
r
s
F
i
l
t
e
r
.
j
a
v
a
:
96
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
f
i
l
t
e
r
.
O
n
c
e
P
e
r
R
e
q
u
e
s
t
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
(
O
n
c
e
P
e
r
R
e
q
u
e
s
t
F
i
l
t
e
r
.
j
a
v
a
:
107
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
i
n
t
e
r
n
a
l
D
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
193
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
d
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
166
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
f
i
l
t
e
r
.
C
h
a
r
a
c
t
e
r
E
n
c
o
d
i
n
g
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
I
n
t
e
r
n
a
l
(
C
h
a
r
a
c
t
e
r
E
n
c
o
d
i
n
g
F
i
l
t
e
r
.
j
a
v
a
:
200
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
w
e
b
.
f
i
l
t
e
r
.
O
n
c
e
P
e
r
R
e
q
u
e
s
t
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
(
O
n
c
e
P
e
r
R
e
q
u
e
s
t
F
i
l
t
e
r
.
j
a
v
a
:
107
)
[
s
p
r
i
n
g
−
w
e
b
−
5.1.3.
R
E
L
E
A
S
E
.
j
a
r
:
5.1.3.
R
E
L
E
A
S
E
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
i
n
t
e
r
n
a
l
D
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
193
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
d
o
F
i
l
t
e
r
(
A
p
p
l
i
c
a
t
i
o
n
F
i
l
t
e
r
C
h
a
i
n
.
j
a
v
a
:
166
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
S
t
a
n
d
a
r
d
W
r
a
p
p
e
r
V
a
l
v
e
.
i
n
v
o
k
e
(
S
t
a
n
d
a
r
d
W
r
a
p
p
e
r
V
a
l
v
e
.
j
a
v
a
:
199
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
S
t
a
n
d
a
r
d
C
o
n
t
e
x
t
V
a
l
v
e
.
i
n
v
o
k
e
(
S
t
a
n
d
a
r
d
C
o
n
t
e
x
t
V
a
l
v
e
.
j
a
v
a
:
96
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
a
u
t
h
e
n
t
i
c
a
t
o
r
.
A
u
t
h
e
n
t
i
c
a
t
o
r
B
a
s
e
.
i
n
v
o
k
e
(
A
u
t
h
e
n
t
i
c
a
t
o
r
B
a
s
e
.
j
a
v
a
:
490
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
S
t
a
n
d
a
r
d
H
o
s
t
V
a
l
v
e
.
i
n
v
o
k
e
(
S
t
a
n
d
a
r
d
H
o
s
t
V
a
l
v
e
.
j
a
v
a
:
139
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
v
a
l
v
e
s
.
E
r
r
o
r
R
e
p
o
r
t
V
a
l
v
e
.
i
n
v
o
k
e
(
E
r
r
o
r
R
e
p
o
r
t
V
a
l
v
e
.
j
a
v
a
:
92
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
r
e
.
S
t
a
n
d
a
r
d
E
n
g
i
n
e
V
a
l
v
e
.
i
n
v
o
k
e
(
S
t
a
n
d
a
r
d
E
n
g
i
n
e
V
a
l
v
e
.
j
a
v
a
:
74
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
a
t
a
l
i
n
a
.
c
o
n
n
e
c
t
o
r
.
C
o
y
o
t
e
A
d
a
p
t
e
r
.
s
e
r
v
i
c
e
(
C
o
y
o
t
e
A
d
a
p
t
e
r
.
j
a
v
a
:
343
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
o
y
o
t
e
.
h
t
t
p
11.
H
t
t
p
11
P
r
o
c
e
s
s
o
r
.
s
e
r
v
i
c
e
(
H
t
t
p
11
P
r
o
c
e
s
s
o
r
.
j
a
v
a
:
408
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
o
y
o
t
e
.
A
b
s
t
r
a
c
t
P
r
o
c
e
s
s
o
r
L
i
g
h
t
.
p
r
o
c
e
s
s
(
A
b
s
t
r
a
c
t
P
r
o
c
e
s
s
o
r
L
i
g
h
t
.
j
a
v
a
:
66
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
c
o
y
o
t
e
.
A
b
s
t
r
a
c
t
P
r
o
t
o
c
o
l
af870bf6.getDataFromDingding(<generated>) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) ~[spring-webmvc-5.1.3.RELEASE.jar:5.1.3.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) ~[druid-1.1.9.jar:1.1.9] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.1.3.RELEASE.jar:5.1.3.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) ~[tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.coyote.AbstractProtocol
af870bf6.getDataFromDingding(<generated>) [classes/:na]atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) [na:1.8.0181]atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [na:1.8.0181]atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [na:1.8.0181]atjava.lang.reflect.Method.invoke(Method.java:498) [na:1.8.0181]atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atjavax.servlet.http.HttpServlet.service(HttpServlet.java:660) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) [spring−webmvc−5.1.3.RELEASE.jar:5.1.3.RELEASE]atjavax.servlet.http.HttpServlet.service(HttpServlet.java:741) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat−embed−websocket−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atcom.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) [druid−1.1.9.jar:1.1.9]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring−web−5.1.3.RELEASE.jar:5.1.3.RELEASE]atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.coyote.AbstractProtocolConnectionHandler.process(AbstractProtocol.java:791) [tomcat-embed-core-9.0.13.jar:9.0.13]
at org.apache.tomcat.util.net.NioEndpoint
S
o
c
k
e
t
P
r
o
c
e
s
s
o
r
.
d
o
R
u
n
(
N
i
o
E
n
d
p
o
i
n
t
.
j
a
v
a
:
1417
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
o
r
g
.
a
p
a
c
h
e
.
t
o
m
c
a
t
.
u
t
i
l
.
n
e
t
.
S
o
c
k
e
t
P
r
o
c
e
s
s
o
r
B
a
s
e
.
r
u
n
(
S
o
c
k
e
t
P
r
o
c
e
s
s
o
r
B
a
s
e
.
j
a
v
a
:
49
)
[
t
o
m
c
a
t
−
e
m
b
e
d
−
c
o
r
e
−
9.0.13.
j
a
r
:
9.0.13
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
r
u
n
W
o
r
k
e
r
(
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
.
j
a
v
a
:
1149
)
[
n
a
:
1.8.
0
1
81
]
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
T
h
r
e
a
d
P
o
o
l
E
x
e
c
u
t
o
r
SocketProcessor.doRun(NioEndpoint.java:1417) [tomcat-embed-core-9.0.13.jar:9.0.13] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.13.jar:9.0.13] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181] at java.util.concurrent.ThreadPoolExecutor
SocketProcessor.doRun(NioEndpoint.java:1417)[tomcat−embed−core−9.0.13.jar:9.0.13]atorg.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)[tomcat−embed−core−9.0.13.jar:9.0.13]atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)[na:1.8.0181]atjava.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.13.jar:9.0.13]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
第一想法是觉得SQL写错了,然后就去拼命检查sql,又检查了实体类与数据库的字段,整了将近2个小时,又让同事一起看,sql确实没问题。然后在公司前辈的指点下,看了传过来的list,结果是list.size()是为0的。加了个判断
if(list.size()>0){
count=attendanceMapper.addBatch(list);
}
程序正常运行。
这种错误,以前遇到过多次,都没花多少时间,这次主要还是犯了先入为主的错误,以来就认为是sql的问题,也没往其他方面想,所以花了2个小时,确实不应该。以后遇到类似问题,还是得一路排查,切记钻牛角尖