hibernate save后 get 子对象的有关问题(实体数据)

hibernate save后 get 子对象的问题(实体数据)
这两天在用aop 写个发信机制,由于 发信模板用的是 spring的velocity 正好 顺便学习了 其中的 el表达式
#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吧