4 H8 z' O# q- W" ~7 P& N userinfo0_.roomid as roomid0_0_5 h9 o0 z! W# `: T
4 u F! y5 t! `# U# L$ j from # y+ P/ |8 N; X1 P: [; u$ T: v+ [1 r# k N! h" e4 N; p) g
userinfo userinfo0_5 ^0 j% V" E* u
1 n$ T8 V9 D! g1 S- w* U5 i where; p0 m0 K, I6 E, U' l# p9 _
$ E3 K- i6 {0 w, @5 u6 Q" k userinfo0_.id=?) E7 ?1 U' ?; C2 r! c5 l3 n
8 E6 M7 A v2 _; I. O0 T
Hibernate: # R1 M" c) v# H3 f8 x$ Z. p ) Y6 X/ S. Y3 _ {$ y/* ①session.merge(userInfo2)的动作 */ 7 G2 k* [5 c9 M, l+ L/ C/ i ' i! ? g2 O) W2 g, Pupdate. y7 C9 ?; O! F, P) [+ M& |1 B
o S k0 @! x3 d0 h) ?$ f userinfo % R; V3 i* S* t$ {- W) e Q/ O( v" Q: w" J3 J s3 D/ h
set1 m. H7 }2 r6 m
: A! i6 l7 g4 j
NAME=?,1 J K6 Q( Q6 {, |/ Z* E6 g2 A
0 }; D. M' E+ F0 o; V SEX=?,! M* c# A: V" _, m, u
0 L) ]. y9 } O% v
roomid=? & y. y Y% l0 c) | # v! v! [7 H6 H where! F) @- A! a' V5 h
3 F* D6 m& V+ |1 S4 F5 l6 a( R
id=? 7 \2 V) l1 |( o' m- M9 f 5 N5 O; ]+ v. m$ W: `* Bsession.merge()方法会首先发送一句select语句,去数据库端获取UserInfo持久化标识所对应的表记录;然后自动生成一个持久化状态的UserInfo实体,与脱管状态的UserInfo实体做比较是否有所改变;一旦发生了改变,才会发送update语句执行更新。而按执行顺序,若两句session.merge()方法针对同一个脱管状态的UserInfo实体,那其结果只会执行最后一个session.merge()方法所发出的update语句。即使执行了session.merge()方法,UserInfo实体依然是脱管状态,因此③userInfo2. setName("RW5")的语句不会同步数据库中的表。+ U T( @) f' ~6 e! }+ l+ i
" f. [+ ?# H5 a C