这两天在用aop 写个发信机制,由于 发信模板用的是 spring的velocity 正好 顺便学习了 其中的 el表达式
…………跑题了
总之 就是我想 直接给 interceptor 传递一个 对象 剩下取值 就全扔给 view了
其实 我一直很喜欢 对象 view层 是对象 到了controller 也是对象 vo po
所以我比较欣赏用 json 尤其 是 getForm 和 setForm 时 对于 table的 list更不用说了,…………又跑题了
比如用户注册 我的实体比较乱
User 下 有 one-to-many 的 Address one-to-one 的 Company 等
更有些 Const 是 在table 保存的 codeTable 这样 几乎也是一对一
比如 birthday 就是一个CodeList 对应
CodeLis.id=111;
CodeList.value="1985"
不过前台 只能这样写
结果 111 null
这就很奇怪 通过跟踪 其实 当执行完 save 后db 里已经有了数据 可是什么 查不到,我看了hb 生成的sql语句 发现 只差了 User 没有差 Address 和 Birthday 莫非是 lazy false 的原因 但 一对一 不可能啊,
最后想了想应该是 hb 缓存的原因 缓存 存放 对应 key value key 为id value 为po 因为 我从前台传进了id 所以 hb 从缓存中得到了 key 就不会去查db 自然 value也不会更改
于是乎 我调用
这样保证 我在 get之前清空session 拿到的肯定是 db 里的数据
其实仔细想了下 只要我在save后 把 id改掉就ok 不过 又担心 save后 其实 vo 已经成了po 改id 会不会 导致 update 干脆 就省事的 clear吧
#if #end #foreach #end
…………跑题了
总之 就是我想 直接给 interceptor 传递一个 对象 剩下取值 就全扔给 view了
其实 我一直很喜欢 对象 view层 是对象 到了controller 也是对象 vo po
所以我比较欣赏用 json 尤其 是 getForm 和 setForm 时 对于 table的 list更不用说了,…………又跑题了
比如用户注册 我的实体比较乱
User 下 有 one-to-many 的 Address one-to-one 的 Company 等
更有些 Const 是 在table 保存的 codeTable 这样 几乎也是一对一
比如 birthday 就是一个CodeList 对应
CodeLis.id=111;
CodeList.value="1985"
不过前台 只能这样写
name='user.birthday.id' name='user.name'
这样我 在action 接受到 的就是一个 user 用 hibernate save 后 db里 也出了数据 然后 我直接
public User todo(User user){
user=this.save(user);
user=this.get(user.getId());
System.out.println(user.getBirthDay.getId()) ;
System.out.println(user.getBirthDay.getValue()) ;
}
结果 111 null
这就很奇怪 通过跟踪 其实 当执行完 save 后db 里已经有了数据 可是什么 查不到,我看了hb 生成的sql语句 发现 只差了 User 没有差 Address 和 Birthday 莫非是 lazy false 的原因 但 一对一 不可能啊,
最后想了想应该是 hb 缓存的原因 缓存 存放 对应 key value key 为id value 为po 因为 我从前台传进了id 所以 hb 从缓存中得到了 key 就不会去查db 自然 value也不会更改
于是乎 我调用
public void clearCache() {
getHibernateTemplate().clear();
}
public User todo(User user){
user=this.save(user);
this.clearCache();
user=this.get(user.getId());
System.out.println(user.getBirthDay.getId()) ;
System.out.println(user.getBirthDay.getValue()) ;
}
这样保证 我在 get之前清空session 拿到的肯定是 db 里的数据
其实仔细想了下 只要我在save后 把 id改掉就ok 不过 又担心 save后 其实 vo 已经成了po 改id 会不会 导致 update 干脆 就省事的 clear吧