00:00
转接而来说,不能改关联对象的这个问题。刚才的话呢,报了一个错,说什么呀,说我把这个ID由二改成四了。大家思考之后的话,觉得是为什么呀。我们来画一个图,大家看一下。我们在整个这个执行过程中呢,实际上是执行了两个方法,一个是model tribute修饰这个方法,还有一个是目标方法法,那我这两个方法的过程中,我操作的是不是一个employee对象啊。都是什么,都是32行,我从数据库里边获取这个对象吧,是吧,所以说实际上是有两个方法。我们看。这两个方法呢,一个叫get employee,另外那个叫update。
01:01
诶。我这两个方法实际上操作的是一个employee对象。这个事儿大家认可吧,是吧。哎,一个employee对象,就是说我这个方法结束的时候啊,这个employee生命周期并没有结束,因为给它放在map里边了,然后我到update的时候的话呢,我先从map里边把这个对象取出来,然后这把表单对应的属性附进来,所以说差不多是同一个对象好了,那我这个时候获取这个对象的时候,这个对象怎么样,它是不是有一个department呀。获取完之后的话,就是一个employee employee可能长成这个样子。这里边儿的话呢,会有一个什么呢,会有一个。
02:04
Department。而这个department呢,它指向一个department。这个department ID呢,比方说是四。哎,他是这么一个情况。它指向他这个employee呢,指向他是吧,好了,然后到了这个update方法的话,他尝试着干什么呀,他尝试着进行更新。点过来,这不是一个更新操作吗?Save and flash,那我在我在。Update方法里边这个employee,它指向的那个department的属性实际上已经发生变化了,为什么呀?数据库里边获取那个department的ID是二,但是我一提表单的话,这ID值是不是改了呀?怎么改的呀,由二改成。
03:19
这么写吧,有二它就改成四啊,有四就改成二了,ID改了,ID1改的话,你一更新可不是说要改我employee关联的department的ID吗?由四改成二,它当然就不让改了。所以说出了这样的一个异常。问题在于,我整个操作的是一个employee对象。然后这一个employee对象关联着一个department,他就改这个ID了。而在harmlet里边。持久化对象的那个ID值是不可以被修改的,对吧?那如何解决这个问题呢?
04:02
我不能让他改ID啊,我怎么办呢?我只能让它指向一个新的对象,就是说你以前是四,现在是二,怎么办?ID值别改了,你指向一个新的吧。我能让你这么干?这样做是可以的。哎,这样做是可以的,把这个给它断掉,怎么断掉啊。在这里。断掉。在这儿,employee.set department是now,这个时候我就会指向一个新的department,它的ID。那个值I是谁是谁,我只向新的了,我没去改ID啊,这样的话,这个问题不就解决掉了吗。再找一个。好,我们重新改一个哈。
05:02
刷新。好。加上一个V。V得改成。17、注意公关部走。修改怎么样,是不是成功了?哎,这就是我们如何去解决修改ID的问题,大家需要知道这个原因,而且还需要知道如何去改它。我们把这个笔记的话呢,也加上在这个在at model attribute方法中。把关联的department指控。OK,这样这个修改就完成。
我来说两句