当前位置: 首页 > news >正文

罗湖田贝社区网站建设如何鉴赏网站论文

罗湖田贝社区网站建设,如何鉴赏网站论文,如何做一间公司的网站,营销型网站建设域名是目录 报错现象报错内容处理方法Oracle驱动源码总结 报错现象 oracle表中存在TIMESTAMP类型的列时,jdbc查出来做序列化时报错 报错内容 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframewo…

目录

  • 报错现象
  • 报错内容
  • 处理方法
  • Oracle驱动源码
  • 总结

报错现象

oracle表中存在TIMESTAMP类型的列时,jdbc查出来做序列化时报错

报错内容

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class java.io.ByteArrayInputStream]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.oxye.ResMsg["data"]->com.oxye.base.dto.BaseResponse["columns"]->java.util.ArrayList[0]->java.util.ArrayList[10]->oracle.sql.TIMESTAMP["stream"])
---
Caused by: org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class java.io.ByteArrayInputStream]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.oxye.ResMsg["data"]->com.oxye.base.dto.BaseResponse["columns"]->java.util.ArrayList[0]->java.util.ArrayList[10]->oracle.sql.TIMESTAMP["stream"])
---
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.ByteArrayInputStream and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.oxye.ResMsg["data"]->com.oxye.base.dto.BaseResponse["columns"]->java.util.ArrayList[0]->java.util.ArrayList[10]->oracle.sql.TIMESTAMP["stream"])

处理方法

任选其一,目的就是设置一个变量:
1.项目启动时设置一行代码 System.setProperty(“oracle.jdbc.J2EE13Compliant”, “true”);

2.jar启动命令增加 -Doracle.jdbc.J2EE13Compliant=true

3.oracle连接串中增加属性oracle.jdbc.J2EE13Compliant=true

Oracle驱动源码

版本

	<dependency><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc8</artifactId><version>21.9.0.0</version></dependency>

oracle.jdbc.driver.GeneratedPhysicalConnection类有属性j2ee13Compliant,可以看到
readConnectionProperties中会从多处寻找属性oracle.jdbc.J2EE13Compliant,找不到默认是false

/***/
abstract class GeneratedPhysicalConnection extends OracleConnection {boolean j2ee13Compliant;/***/protected void readConnectionProperties(String var1, @Blind(PropertiesBlinder.class) Properties var2, @Blind(PropertiesBlinder.class) Properties var3) throws SQLException {/***/var4 = null;if (var2 != null) {var4 = var2.getProperty("oracle.jdbc.J2EE13Compliant");}if (var4 == null) {var4 = getSystemProperty("oracle.jdbc.J2EE13Compliant", (String)null);}if (var4 == null && var3 != null) {var4 = var3.getProperty("oracle.jdbc.J2EE13Compliant");}if (var4 == null) {var4 = "false";}this.j2ee13Compliant = var4 != null && var4.equalsIgnoreCase("true");/***/

oracle.jdbc.driver.TimestampAccessor的getObject方法中,会根据属性j2ee13Compliant选择获取时间的方式

/***/
class TimestampAccessor extends DateTimeCommonAccessor {/***/Object getObject(int var1) throws SQLException {if (!this.isUseLess && !this.isNull(var1)) {if (this.externalType == 0) {return this.statement.connection.j2ee13Compliant ? this.getTimestamp(var1) : this.getTIMESTAMP(var1);} else {switch (this.externalType) {case 93:return this.getTimestamp(var1);default:throw (SQLException)((SQLException)DatabaseError.createSqlException(this.getConnectionDuringExceptionHandling(), 4).fillInStackTrace());}}} else {return null;}}/***/

oracle.jdbc.driver.DateTimeCommonAccessor有两个方法getTimestamp和getTIMESTAMP,j2ee13Compliant为true时用getTimestamp获得java.sql.Timestamp,false获取oracle.sql.TIMESTAMP

/***/
import java.sql.Timestamp;
/***/
import oracle.sql.TIMESTAMP;
/***/
abstract class DateTimeCommonAccessor extends Accessor {/***/Timestamp getTimestamp(int var1) throws SQLException {return this.getTimestamp(var1, (Calendar)null);}/***/TIMESTAMP getTIMESTAMP(int var1) throws SQLException {return this.isNull(var1) ? null : new TIMESTAMP(this.getBytesInternal(var1));}/***/

总结

通过设置属性oracle.jdbc.J2EE13Compliant=true,可以时oracle的timestamp以oracle.sql.TIMESTAMP类型返回,不设置时默认false,返回oracle.sql.TIMESTAMP,可能会导致序列化时类型转换失败等问题

http://www.yayakq.cn/news/277799/

相关文章:

  • 百度上传自己个人简介万源seo
  • 下面哪些是用作电子商务网站开发谷歌seo2022
  • 公司网站的详细步骤erp办公系统软件
  • 宁波专业建站电脑做的本地网站手机看
  • 徐州免费建站模板郑州网站制作生产厂商定制
  • 安庆建设工程造价网站玉林网站建设培训
  • 北京国税局网站做票种核定wordpress 固定链接结构出错
  • 网站总体规划校园门户网站建设方案
  • 网站建设公司 待遇网站建设电话销售不被挂断
  • 带后台的响应式网站北京最新发布会直播
  • 网站编辑步骤有哪些网站应当实现那些功能 流程如何设计
  • 怎样登陆网站后台个人空间网站免费
  • 领地网建的网站太原网站开发团队
  • 2个网站做的链接怎么用一个域名网站备案变更单位名称
  • 关键词挖掘站长全网型网站建设方案
  • 做爰全过程免费的视网站做网页前端接活网站
  • dw做的网站怎么发布wordpress 文章 模版
  • 能领免做卡的网站郑州公司网站设计
  • 建站服务搭建的页面时wordpress支持多个站点地址
  • 医院网站建设要素湖南 中小企业 网站建设
  • 朝阳网站建设公司电话网站数据库模板下载
  • 做框架表格网站建立网站站点的过程中不正确的是
  • 这样做网站wordpress悬浮菜单
  • 提升审美的网站建网站建设的基本流程
  • 做网站需要用什么语言做婚纱网站是怎么确认主题
  • c 网站开发实例教程用asp做的网站如何发布
  • 怎么黑人网站wordpress安装权限管理
  • 益阳市建设局网站视频宣传片免费模板
  • 徐州网站开发公司网站怎么做显得简洁美观
  • 在阿里巴巴做网站seo外包服务方案