首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

因在缓存对象中增加字段,而导致Redis中取出缓存转化成Java对象时出现反序列化失败的问题

背景描述 因为业务需求的需要,我们需要在原来项目中的一个DTO类中新增两个字段(我们项目使用的是dubbo架构,这个DTO在A项目/服务的domain包中,会被其他的项目如B、C、D引用到)。...但是这个DTO对象已经在Redis缓存中存在了,如果我们直接向类中增加字段而不做任何处理的话,那么查询操作查出来的缓存对象就会报反序列化失败的错误,从而影响正常的业务流程,那么来看一下我的解决方案吧。...解决方案就是升级缓存的版本号(修改原来缓存DTO的Redis的Key值) 缓存key升级版本号,在其他未更新的应用中的缓存key已经在跑的jar包里面,他们的key是旧的,比如v1,那么v1对应的DTO...升级后新的DTO版本为v2那么发起来的自身服务刷新最新的DTO缓存是放到v2的key里面的,即v2->新的DTO,v1->旧的DTO。这样可以保证不会有反序列化的问题。...注意 改版本号一定要在第一次发的时候改上去才好,不然你按v1发的版,发现问题再改成v2已经就晚了,因为已经把新的DTO刷到v1里面了,线上的依赖服务里面的domain包就是v1捞出来肯定异常。

99430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    与ObjectDataSource共舞

    而XCode的模型,是完全满足ObjectDataSource要求的,下面继续高级功能 image.png 这是ObjectDataSource控件属性中的分页类属性,第一项启用分页,第三项指定用于查询所有记录数的方法...(前面提到过查询方法是成对出现的,这里的FindAllByName和FindCountByName就是一对),至于第二项和第四项,是不是很熟悉?...如果查询方法使用的不是这两个参数,那么在配置ObjectDataSource的时候自己跟着改就是了。 这两个参数,第一个是从哪一行开始读数据,第二个是返回的最大行数,其实就是每页行数。...打开GridView的智能标记,选择ObjectDataSource控件作为数据源,GridView即可自动生成列 image.png 当然,这个列并不是数据库字段,而是实体类的属性。...BTW:GridView那里,其实还可以启用编辑和删除的,因为配置ObjectDataSource的时候,默认已经配置了编辑和删除的方法。

    89150

    使用css控制gridview控件的样式,GridView 样式美化及应用.doc

    大家好,又见面了,我是你们的朋友全栈君。 GridView 样式美化及应用 GridView 样式美化及应用摘要:ASP.NET 4.0中GridView控件主要用于显示数据库的查询结果。...当 GridView 控件绑定到某个数据源控件时,GridView控件可利用该数据源控件的功能并提供自动排序、更新和删除功能,而这些功能的实现有时可以不写代码或写很少的代码。...这是因为生成时html时该样式是被应用在tr上的,类似:,所以,你这样应用的表头样式是无法生效的。只有你在样式表中定义了:tr{text-align:left},才可以让表头靠左显示。...1.2 边框样式 这样的缺点是不太灵活,如果需要用主题来控制界面样式,而代码中又有这样的语句的话,就不是很合适,利用css提供的机制,可以比较好的解决这个问题,代码如下: 然后在css样式表中设置: 这样就解决了...属性来控制但常常会出现表格错乱等现象,因此我们采用通过js计算单双行来改变背景色的方法,代码简单且兼容性也较好,代码如下: //设置每一行的背景色和事件,循环从1开始而非0,可以避开表头那一行 调用:

    3.3K30

    Gridview导出到Excel,Gridview中的各类控件,Gridview中删除记录的处理

    假设在一个gridviw中,展现的每条记录中都需要供用户用下拉选择的方式选择dropdownlist控件中的内容,则可以使用如下代码,当用户选择好gridview中的dropdownlist控件的选项后...=xState) elm[i].click(); } } </script> 三、gridview中删除记录的处理 在gridview中,我们都希望能在删除记录时,能弹出提示框予以提示,在asp.net...> 在上面的代码中,我们设置了一个链接linkbutton,其中指定了commandname为"Delete",commandargument为要删除的记录的ID编号,注意一旦commandname设置为...(int) GridView1.DataKeys[e.RowIndex].Value; DeleteRecordByID(categoryID); } 要注意的是,这个必须将datakeynames设置为要删除记录的编号...小结 在本文中,继续探讨了gridview控件的一些用法,如导出到excel,在删除记录时的处理,以及如何访问gridview中的控件等。

    2.6K20

    GridView隐藏列取值解决方案

    ,则不会进行数据绑定,也就是说无法直接从GridView中取到这个列内的文本。...,则不会进行数据绑定,也就是说无法直接从GridView中取到这个列内的文本。...这一功能在DataGrid时代几乎是必须的,在对列表进行批量选中操作时非常有用(比如批量删除),隐藏列通常用于存储DataGrid行对应数据记录的关键字的值,而现在在GridView中却行不通,着实令一大批人头疼不已...,网上也有了其解决方案,其中一个如下,其原理是在行创建时设置其css样式为不可见,这样可以避免直接设置列的visible=false带来的数据不绑定问题: void GridView1_RowCreated...就事论事,回到标题,现提供我对这个问题的解决方案,基本思想仍然是用css使得单元格不可见,而不妨碍它的数据绑定,但我的方法却不需要在cs文件中多加一行代码,其思路如下: (1)设置一个css类:

    1.5K30

    Web之真假分页

    在web设计中一个无法避免的问题就是分页显示。当数据量特别大的时候,我们不可能将全部的数据都在一个页面进行显示,假设这样将严重影响到它的美观性。所以在这个时候,分页显示则成为了我们的大功臣。...当然分页也分两种,一种是真分页,一种是假分页,即: 假分页:从数据库中选择全部记录后在分页。...真分页:从数据库中选择当前页的记录 首先先来说一下自带的分页功能(假分页): 在.net中的GridView控件就自带分页显示功能,当然操作非常easy,总共分成两步:...1、在界面加入�一个GridView控件,设置其属性AllowPaging的值为True,PageSize的值为n( n 为每一页显示记录的条数),这样就设置成功了。...尽管能够实现想要的结果,可是还存在着一些问题,比方上面的绑定数据方法中绑定的是所有的新闻,每次运行的时候都会查询数据库中所有的记录,当记录达到一定量大的时候比方50万条,100万条等等,这个时候绑定的时候会是多么长的时间

    62440

    GridView实战一:自定义分页、排序、修改、插入、删除

    3.新增状态:因为GridView自身附带新增记录的功能,所以选择在EmptyDataTemplate中实现新增的功能(借鉴其他同行的做法!)...因为DropDownList包含在GridView中是动态生成的,当PostBack时GridView并不会恢复其中的动态内容;如果把分页功能放在GridView以外实现,那么动态生成的时DropDownList...总结:   不适用数据源控件的优点是,新增记录时可以马上看到新增的记录;缺点是即使实现了分页功能,但每次还是从数据库中读取全部数据,效率低。...而使用ObejctDataSource来绑定就可以解决从数据库读取全部数据的问题,并且附带数据缓存(应用程序级缓存)的功能,省心多了。...但却又因ObjectDataSource不支持重新绑定,而使新增记录时不能马上看到新增的记录的缺点。

    2.8K100

    GridView删除事件

    首先:转摘一段GridView删除的文章 RowDeleting和RowDeleted事件 RowDeleting发生在删除数据之前,RowDeleted发生在删除数据之后。...使用RowDeleting事件,可以在真正删除前再次确认是否删除,可以通过设置GridViewDeleteEventArgs.Cancel=True来取消删除;也可以用于判断当前数据库记录数,如果只剩一条记录且数据库不能为空则提示并取消删除操作...使用RowDeleted事件,可以在删除后,通过GridViewDeletedEventArgs的Exception属性判断删除过程中是否产生异常,如无异常,则可以显示类似于” 1 Records deleted...else Message.Text += “删除失败,请联系管理员”; } 其次:需要特别说明,如果在GridView中添加了模板列并在其中添加了按钮,只要按钮的CommandName...>删除 在Div中首先触发的是OnClick事件,然后执行其他事件 例如:删除吗?

    1.2K20

    WPF是什么_wpf documentviewer

    ItemContainerStyle中的对齐问题 2.4. 与GridView进行用户交互 2.5....在我印象中Grid是网格式的,而List是列表式的,所以我很好奇两者为什么可以混到一起。当然从类的关系上来看,应该是两者都继承了一个共同的父类。...注意: 上面这段话用“定义”这个词,而不是设置(其实从理解角度讲都行)。 转换成后端代码表示的话,定义就更加好理解了。 后文也有反复出现定义一词,有时候换成设置更好理解。...ItemContainerStyle中的对齐问题 为了防止列标题和单元格之间的对齐问题,不要设置或指定影响ItemContainerStyle中项宽度的属性或模板。...你还可以定义用户单击列标题时响应的事件处理程序。事件处理程序可以执行类似于根据列内容对显示在GridView中的数据进行排序的操作。

    4.7K20

    ASP.NET2.0 ObjectDataSource的使用详解

    此默认命名约定的使用假设 Keys 和 Values 字典的内容相互排斥 — 即用户能够在数据绑定控件处于编辑模式时更新的字段值的命名应该与用于匹配要更新的行的字段值(对于 SqlDataSource,...考虑这点的另一种方式是在 DataKeyNames 上设置的任何字段都应该设置为只读或在数据绑定控件中(例如在 GridView Columns 集合中)不可见。...例如,如果我们将Products数据库的ProductID列在设计表格结构时设置为nvarchar,它存放的是图书ISDN编号,该编号并不是递增的,因此在运行时,您可以更改ProductID的只,前提是主要不重复即可...这样我们就需要将该ProductID列设置为ReadOnly=”false”以便允许编辑,另一方面,为了确认哪条记录被更新还需要传递该列的只到更新/删除方法,所以还需要将DataKeyNames设置为ProductID...这样GridView 将在 Keys 字典中传递该字段的旧值,而在 Values 字典中传递该字段的新值。

    58510

    大数据分页实现与性能优化【转】

    缺点是使用内存数据分页机制时,首先需要把所有的数据库记录调入内存。...对于内存数据分页,在.NET平台下常用的分页方案是GridView控件自带的分页【4】,GridView是DataGrid的后继控件, GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据...利用GridView控件自带的分页功能实质是把查询的所有数据从后台读取出来,然后通过内存分页的方式返回单页数据,因此第一页和最后一页的显示速度基本相同。...而内存分页GridView和传统的游标分页在大数据的分页上更是严重耗时,不能达到实际网页响应的时间要求。...由于聚集索引在一个数据表里只有一个,这个聚集索引的资源也就显得格外的宝贵,主键的默认设置为聚集索引,而很多时候查询的条件,排序的条件并不是主键字段,所以应该修改主键字段的设置,把它设置为非聚集的索引。

    1.7K30

    分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?

    当数据库有变化的时候(比如添加了一个字段、删除字段、修改了字段的名字),在程序方面只需要修改一个地方就可以应对,不需要改多的地方,更不用到处去找应该修改哪里。...对于第七点还要再多说一点,DataList可以多行多列的显示数据,但是一条记录只能放在一个item里面也就是一个TD,GridView可以多个TD的形式显示数据,但是同一行里只能有一条记录。...数据是不是还要格式化一下呢?否则的话会很难看的。 还有就是数据库里的字段名称变化的话,myGrid是不是不用修改就可以自动适应呢?      好了这个就是最后一个问题了,胜利在望,坚持就是胜利。...删除一条记录就可以了,Manage_FunListCol 里面删除一条ColumID为100100300并且FunctionID为21的记录就可以了。      什么?...您说还要手动到数据库里面删除记录,还得找ID,这也太麻烦了,还不如直接写代码方便呢!是呀,确实挺麻烦。不过我只说把信息放在了数据库里面,并没有说我们要手动去修改数据库的记录呀。

    1.1K50

    GridView用法,分页

    1是实体类中的属性名,对应数据库中主键字段 取:gvId.DataKeys[index].Value.ToString(); gvId.DataKeys[index].Values[“名称1″].ToString...种方法是从单元格中查找所需的控件,依次将他转换为相应的控件来取值;注意这里的Controls[0]和FindControl方法,有的时候会找不到控件而返回一个null导致为初始化的错误产生 PS:一般不报错...,但是取到的值不是更新后的值时,一般就是Load事件了,IsPostBack属性要判断下 f) RowDeleting删除事件: 方法跟上面的事件差不多,只要获得主键,然后调用bll层的删除方法即可 g...) RowDataBound事件:单选删除例子上面的LinkButton是手动在模板列中添加的控件,若要实现上面的删除功能,还需要在页面源码中给gridView添加上模板列(CommandField里面的删除功能...,只有一个总删除按钮时,用到checkbox 思路: 首先给删除按钮添加点击事件,同上: this.btnDel.Attributes.Add(“onclick”,”return confirm(‘确认删除

    1.2K30

    ASP.NET2.0中用Gridview控件操作数据

    1、使用Gridview插入新记录 在Gridview控件中,可以实现插入新记录的操作(见《使用ASP.NET 2.0中的Gridview控件》)一文,但如果想实现在Gridview中,实现在Gridview...首先,我们打算在让用户进行选择,当用户需要新增一记录时,便点击新增按钮,之后在Gridview的最后一行里,显示一个空白行,让用户按字段进行输入,如下图所示: 当用户决定不输入新空白记录时,可以按"cancel...e) { Gridview1.ShowFooter = true; } //点add按钮时,将新增的记录更新到数据库中去 void Button1_Click(object sender, EventArgs...按钮的事件,用来取消显示Gridview的footer模版,因此设置showfooter属性为false,而addbutton1按钮,是当用户决定新增记录时点选的,此时将设置showfooter属性为true...2、一次性更新所有的Gridview记录 我们经常会遇到这样的情况,在Gridview中列出的所有记录中,有时要同时修改多条记录,并且将其保存到数据库中去。那么在Gridview中应该如何实现呢?

    1.5K10

    Vs.net 2008 sp1新特性之Dynamic Data Web Site

    功能 通过读取数据库的结构或是数据模型,生成标准的asp.net web UI表单 支持数据表新增,删除,修改,查询操作(CRUD),支持有关联关系的表操作和数据字段的验证 可以自动实现对有外键关联关系的表生成相应关联的...Data Model(数据模型) 数据模型代表的信息是在一个数据库中,以及在一个数据库项目中彼此相关的关系。 动态数据支持LINQ-to-SQL数据模型和ado.net实体框架数据模型。...(页面模板) 将任何数据库表中提供的动态数据显示在这个经过配置的web页面中,可以显示(列表视图) ,显示主/详细表(详细检视) ,编辑资料(编辑视图) ,等等。...和gridview控件可以显示数据的动态使用预定义的动态数据模板而不是要求您在每一页重新建立相同的标记和代码数据控制。...所有需要操作的表 ? 其中选择浏览一个表中的记录 ? 浏览记录明细 ? 新增一条记录 ? 修改一条记录 ? 或是删除 ?

    1.6K50

    MVC架构在Asp.net中的应用和实现

    经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。...提供访问显示数据的操作,提供控制内部行为的操作以及其他必要的操作接口。这部分的构成与具体的应用问题紧密相关。 3、设计和实现视图: 设计每个视图的显示形式,视图从模型中获取数据,并将数据显示在屏幕上。...// 多条记录删除,在删除按钮事件中调用 ?     protected override void DelRecords(object keyValuesString) ? ?    ...当加载aspx页面时将调用Page_ Load事件,当aspx页面从内存中被卸载时将调用Page_UnLoad事件。如果某个部件触发页面以使其被重新加载则将调用Control Event事件。...// 返回GridView使用的数据源 ? ? ? protected virtual object GetDataSource() ? {…} ? ? // 删除View中的选择的数据 ?

    3.7K20

    ASP.NET2.0 GridView小技巧汇粹

    1)GridView绑定数据源控件,需要有编辑和删除选项按钮时,数据源控件必须提供SQL操作语句或存JavaScript 1)GridView...绑定数据源控件,需要有编辑和删除选项按钮时,数据源控件必须提供SQL操作语句或存储过程调用,一般,我的推荐做法是,使用无意义的SQL语句或存储过程来使GridView的编辑和删除按钮可以生成,具体的编辑更新和删除操作在代码运行时而不是在控件设计时指定...,虽然多写了一点代码,但是对以后的扩展应用是很有好处的,建议所有的数据操作,不管是简单还是复杂的,都使用三层结构,这样从WEB到WIN之间的软件转换将十分轻松.而且,统一使用三层结构,虽然代码量会多一点...,从而进入不同的流程处理. 8)GridView的DataSource属性绑定到集合类型上,如:数组,泛型类,DataSet,DataTable等.而它的DataSourceID属性则绑定到特定的数据源控件上...绑定一个对象集合时,如果该对象的公开属性是英文,则GridView的列名也是英文,如果该对象的公开属性是中文,则GridView的列名也是中文,这个技巧可以不同设置GridView的相关属性而得到中文字段显示的

    1.2K30
    领券