今天在做项目时出现了异常,用的是 spring+springmvc+hibernate+mysql 技术
报的错误如下:
org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove ‘readOnly’ marker from transaction definition.
at org.springframework.orm.hibernate5.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1094)
at org.springframework.orm.hibernate5.HibernateTemplate.lambda$delete
23
(
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
j
a
v
a
:
771
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
o
r
m
.
h
i
b
e
r
n
a
t
e
5.
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
d
o
E
x
e
c
u
t
e
(
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
j
a
v
a
:
384
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
o
r
m
.
h
i
b
e
r
n
a
t
e
5.
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
e
x
e
c
u
t
e
W
i
t
h
N
a
t
i
v
e
S
e
s
s
i
o
n
(
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
j
a
v
a
:
350
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
o
r
m
.
h
i
b
e
r
n
a
t
e
5.
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
d
e
l
e
t
e
(
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
j
a
v
a
:
770
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
o
r
m
.
h
i
b
e
r
n
a
t
e
5.
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
d
e
l
e
t
e
(
H
i
b
e
r
n
a
t
e
T
e
m
p
l
a
t
e
.
j
a
v
a
:
765
)
a
t
c
o
m
.
b
w
i
e
.
d
a
o
.
E
m
p
l
o
y
e
e
D
a
o
I
m
p
l
.
d
e
l
e
t
e
E
m
p
l
o
y
e
e
B
y
I
d
(
E
m
p
l
o
y
e
e
D
a
o
I
m
p
l
.
j
a
v
a
:
33
)
a
t
c
o
m
.
b
w
i
e
.
s
e
r
v
i
c
e
.
E
m
p
l
o
y
e
e
S
e
r
v
i
c
e
I
m
p
l
.
r
e
m
o
v
e
E
m
p
l
o
y
e
e
B
y
I
d
(
E
m
p
l
o
y
e
e
S
e
r
v
i
c
e
I
m
p
l
.
j
a
v
a
:
29
)
a
t
c
o
m
.
b
w
i
e
.
c
o
n
t
r
o
l
l
e
r
.
E
m
p
C
o
n
t
r
o
l
l
e
r
.
a
d
d
E
m
p
l
o
y
e
e
(
E
m
p
C
o
n
t
r
o
l
l
e
r
.
j
a
v
a
:
46
)
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
)
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
(
U
n
k
n
o
w
n
S
o
u
r
c
e
)
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
(
U
n
k
n
o
w
n
S
o
u
r
c
e
)
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
(
U
n
k
n
o
w
n
S
o
u
r
c
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
.
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
:
215
)
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
:
142
)
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
)
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
)
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
)
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
)
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
)
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
)
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
:
998
)
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
G
e
t
(
F
r
a
m
e
w
o
r
k
S
e
r
v
l
e
t
.
j
a
v
a
:
890
)
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
:
622
)
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
:
875
)
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
:
729
)
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
:
292
)
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
:
207
)
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
:
52
)
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
:
240
)
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
:
207
)
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
)
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
)
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
:
240
)
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
:
207
)
a
t
o
r
g
.
s
p
r
i
n
g
f
r
a
m
e
w
o
r
k
.
o
r
m
.
h
i
b
e
r
n
a
t
e
5.
s
u
p
p
o
r
t
.
O
p
e
n
S
e
s
s
i
o
n
I
n
V
i
e
w
F
i
l
t
e
r
.
d
o
F
i
l
t
e
r
I
n
t
e
r
n
a
l
(
O
p
e
n
S
e
s
s
i
o
n
I
n
V
i
e
w
F
i
l
t
e
r
.
j
a
v
a
:
155
)
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
)
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
:
240
)
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
:
207
)
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
:
212
)
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
:
94
)
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
:
492
)
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
:
141
)
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
:
80
)
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
.
A
b
s
t
r
a
c
t
A
c
c
e
s
s
L
o
g
V
a
l
v
e
.
i
n
v
o
k
e
(
A
b
s
t
r
a
c
t
A
c
c
e
s
s
L
o
g
V
a
l
v
e
.
j
a
v
a
:
620
)
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
:
88
)
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
:
502
)
a
t
o
r
g
.
a
p
a
c
h
e
.
c
o
y
o
t
e
.
h
t
t
p
11.
A
b
s
t
r
a
c
t
H
t
t
p
11
P
r
o
c
e
s
s
o
r
.
p
r
o
c
e
s
s
(
A
b
s
t
r
a
c
t
H
t
t
p
11
P
r
o
c
e
s
s
o
r
.
j
a
v
a
:
1152
)
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
23(HibernateTemplate.java:771) at org.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:384) at org.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:350) at org.springframework.orm.hibernate5.HibernateTemplate.delete(HibernateTemplate.java:770) at org.springframework.orm.hibernate5.HibernateTemplate.delete(HibernateTemplate.java:765) at com.bwie.dao.EmployeeDaoImpl.deleteEmployeeById(EmployeeDaoImpl.java:33) at com.bwie.service.EmployeeServiceImpl.removeEmployeeById(EmployeeServiceImpl.java:29) at com.bwie.controller.EmpController.addEmployee(EmpController.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:215) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:142) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:890) at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:155) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152) at org.apache.coyote.AbstractProtocol
23(HibernateTemplate.java:771)atorg.springframework.orm.hibernate5.HibernateTemplate.doExecute(HibernateTemplate.java:384)atorg.springframework.orm.hibernate5.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:350)atorg.springframework.orm.hibernate5.HibernateTemplate.delete(HibernateTemplate.java:770)atorg.springframework.orm.hibernate5.HibernateTemplate.delete(HibernateTemplate.java:765)atcom.bwie.dao.EmployeeDaoImpl.deleteEmployeeById(EmployeeDaoImpl.java:33)atcom.bwie.service.EmployeeServiceImpl.removeEmployeeById(EmployeeServiceImpl.java:29)atcom.bwie.controller.EmpController.addEmployee(EmpController.java:46)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(UnknownSource)atsun.reflect.DelegatingMethodAccessorImpl.invoke(UnknownSource)atjava.lang.reflect.Method.invoke(UnknownSource)atorg.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:215)atorg.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:142)atorg.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)atorg.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)atorg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)atorg.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)atorg.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:998)atorg.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:890)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:622)atorg.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:875)atjavax.servlet.http.HttpServlet.service(HttpServlet.java:729)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:155)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)atorg.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)atorg.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)atorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)atorg.apache.coyote.AbstractProtocolAbstractConnectionHandler.process(AbstractProtocol.java:684)
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
:
1539
)
a
t
o
r
g
.
a
p
a
c
h
e
.
t
o
m
c
a
t
.
u
t
i
l
.
n
e
t
.
N
i
o
E
n
d
p
o
i
n
t
SocketProcessor.doRun(NioEndpoint.java:1539) at org.apache.tomcat.util.net.NioEndpoint
SocketProcessor.doRun(NioEndpoint.java:1539)atorg.apache.tomcat.util.net.NioEndpointSocketProcessor.run(NioEndpoint.java:1495)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor
W
o
r
k
e
r
.
r
u
n
(
U
n
k
n
o
w
n
S
o
u
r
c
e
)
a
t
o
r
g
.
a
p
a
c
h
e
.
t
o
m
c
a
t
.
u
t
i
l
.
t
h
r
e
a
d
s
.
T
a
s
k
T
h
r
e
a
d
Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread
Worker.run(UnknownSource)atorg.apache.tomcat.util.threads.TaskThreadWrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
在用 SSH 做项目时出现了上述的错误,在查询和解决此问题时,并总结记录下来
这个异常是因为,在hibernate事务管理中,你在service中写的方法,被hibernate列为了只读属性,只能从数据库中读取数据,不能进行增加和更新和删除操作。
解决方案一:
在执行操作之前 插入sessionFactory.getCurrentSession().setFlushMode(FlushMode.AUTO);
或者 在方法执行之后 getHibernateTemplate().flush();
这也能够明白为什么会出现这个原因的。本人亲测有效。
解决方案二:
使用 hibernateFilter 来解决:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
解决方案三:
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionFactory-ref="sessionFactory">
</bean>
<!-- 用注解来实现事务管理 将所有具有@Transactional 注解的文件自动配置为声明式事务支持-->
<!--tx:annotation-driven transaction-manager="transactionManager" /-->
<!-- xml配置事务 -->
<tx:advice id="txAdviceHibernate" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="serviceMethodsHibnerate" expression="execution(* com.longxia.springmvc.manager..*.*(..))"/>
<aop:advisor advice-ref="txAdviceHibernate" pointcut-ref="serviceMethodsHibnerate" />
</aop:config>
<!-- xml配置事务-->