简单描述一下进遇到的文件:
使用acitivi 流程框架,对流程变量保存获取操作的时候(对表act_ru_variable的操作),发现了以下问题:
向表中保存一个对象,然后获取这个对象的时候想把这个对象打印出来,
可是:
打印出来的是地址。
好,肯定是实体类中没有写toString 方法,在实体类中添加了toString 方法后
问题来了:
获取不到这个对象了,连对象的地址也部打印了。
猜想是我toString 的方法有问题(是修改了这个方法),再把toString 注释掉,
又打印的是对象的地址,再小心的添加toString方法。还是上面一样的文件。
确定不是toString 方法的文件后,问题依然存在,
后来猜测activiti 在保存流程变量的时候是根据什么保存的呢?
也许就是根据实体类的toString 的方法保存数据,
第一,在没有写toString 的时候使用的是默认的toString 方法(也就是对象的地址),所以在打印的时候打印的是地址。
第二,后来添加了toString 方法,而之前保存的对象是没有添加toString时的对象,
在获取这个对象后打印的时候会根据之后添加toString的方法打印。
而这个时候什么也没有。
最后添加toString 方法之后在添加对象到数据库的act_ru_variable表中,
获取对象---打印 一切正常 证明自己的猜测是对的!!!!
总结:
1、activiti 流程框架保存流程变量(对象)时,对应的实体类需要继承序列化。
2、在使用activiti流程框架保存流程变量(对象)的时候,要提前把toString写好。