用 Hibernate 碰到一个很傻的问题,在 iCustomer 中有这样的关联,有服务记录,该记录会与 Customer 关联,当时为了在不需要的时候不在 VO 里 new 出 Customer,用了这样的写法。
public Customer getCustomer() {
if (null == customer) {
customer = new Customer();
}
return customer;
}
这样看似没有问题,当使用到 Customer 的时候才会创建该对象。但是每次却会报告脏数据错误,其实最重要的是我忽略了一个问题,这个方法同样会被 Hibernate 调用,在 null 的时候给 new 出一个相应的 Customer,这样就会出现问题了,如果你把 Customer 设成 null,Hibernate 调用该方法时就会自动给你 new 一个 Customer,并没有任何 id,这样在保存的时候会引发脏数据错误。所以一定要避免这样的写法。
别人给出的建议是把这样的 new Customer 的逻辑放在外面写,手动处理 Customer 的创建。页面上传递的是 Customer 的 id,后台手动加载 Customer 的 PO,然后 set 给 Support。
posted on 2006-07-04 18:30
steady 阅读(797)
评论(0) 编辑 收藏