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

想做cpa 没有网站怎么做网站开发的交付文档

想做cpa 没有网站怎么做,网站开发的交付文档,河北城乡建设官网站,公司网页制作收费标准现象: 项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,…

  现象:
        项目使用了JPA,并且auto-ddl设置的为update,在连接达梦数据库的时候,第一次启动没有问题,但是后面重启就会报错,发现错误为重复建表,也就是说已经建好的表没有检测到,又重新走的建表流程。经过一天的排查,总结了2个解决方案。

 问题的根源:

        问题产生的原因是因为数据库实例设置了不区分大小写,并且在JPA的注解上的表名及字段名将表名都为小写时,在数据库创建的表名和字段名都为小写。在数据库连接后,会获取所有的表,和模型做匹配映射,没有映射的到的表会走创建表的流程,映射到的会走更新流程。但是在映射的过程中,达梦将映射部分强制设置为大写映射,并且这部分代码被写到了达梦的连接驱动内,很难进行扩展。这个映射部分源码要跟的很深,总的来说就是从数据库拿到的表名都是小写的,但是匹配的时候是将实体类上@Table的name值转为大写后再进行映射,而且这个是在达梦数据库的驱动里面设置的,重写方言的buildIdentifierHelper方法也没用。

 而且这个方法的builder是在父类中直接build()的,又没法在父类执行完后扩展,只能在执行前扩展,所以设置的值没用。

解决办法:

        1、达梦数据库创建数据库实例的时候使用默认的规则,区分大小写。不要创建不区分大小写的数据库实例,就不会有这个问题。并且记得在数据库连接里要设置参&ignoreCase=false&columnNameUpperCase=false

        示例:jdbc:dm://{ip}:{port}/{数据库}?schema={schema}&useUnicode=true&serverTimezone=Asia/Shanghai&useSSL=false&characterEncoding=UTF-8&ignoreCase=false&columnNameUpperCase=false

        2、匹配阶段不好解决,就在别的地方想想办法。问题的根源是因为实体类定义的大写表名和数据库中的小写表名匹配不上导致的,那就在建表阶段将表设置为大写就行了。而建表阶段的代码重新方言是可以做到的。

        创建自定义的StandardTableExporter

import org.hibernate.boot.Metadata;
import org.hibernate.boot.model.relational.SqlStringGenerationContext;
import org.hibernate.dialect.Dialect;
import org.hibernate.mapping.Table;
import org.hibernate.tool.schema.internal.StandardTableExporter;public class DmStandardTableExporter extends StandardTableExporter {public DmStandardTableExporter(Dialect dialect) {super(dialect);}@Overridepublic String[] getSqlCreateStrings(Table table, Metadata metadata, SqlStringGenerationContext context) {table.setName(table.getName().toUpperCase());return super.getSqlCreateStrings(table, metadata, context);}
}

        重写达梦方言的getTableExporter方法

import org.hibernate.dialect.DmDialect;public class ZeusDmDialect extends DmDialect {//这里是你自定义的StandardTableExporterprivate DmStandardTableExporter tableExporter = new DmStandardTableExporter( this );@Overridepublic DmStandardTableExporter getTableExporter() {return tableExporter;}
}

        配置使用自己写的写的方言:

spring:jpa:properties:hibernate:dialect: a.b.c.d.e.ZeusDmDialect #这里配置自己写的类的全路径名称,别照抄!!!

把数据库的之前创建的小写的表名的表全删了,多重启几次试试看,应该就解决问题了。

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

相关文章:

  • 企业网站seo怎么做中国各大网站开发语言
  • 微信开发网站制作做项目网站
  • 做的网站怎么让别人也能看到吗网站侧边 跟随 样式
  • 中学生做的网站有哪些方面手机网站建设文章
  • 网站负面信息网站建设 甲方欠款 如何处理
  • 像优酷平台网站是怎么做的北京网站外包公司推荐
  • 国家工商局网站官网旅游公司网站建设合同书
  • 品牌网站制作建设网页界面设计教程视频
  • 网站建设高手要学多久ppt精美模板
  • 专做外贸的网站岳阳市城市建设投资公司网站
  • 淘宝客导购网站怎么做网络营销案例2022
  • 蚌埠高端网站建设陕西省医院网站建设管理
  • 优仔电话手表网站手机制作最简单钓鱼网站
  • 做app的网站有哪些功能个人博客html模板
  • 广东融都建设有限公司 公司网站品牌营销和品牌推广的区别
  • 邳州网站开发长春做网站多少钱
  • 婚纱影楼网站模板vps网站助手
  • 伊犁北京网站建设青岛制作网站
  • 门户网站有哪几个西安建设工程交易信息网
  • 电商网站设计公司力荐亿企邦天津品牌网站建设公司
  • 网站建设洽谈问题如何建立一个网站 供客户选图
  • 数据分析网站怎么做系统开发板
  • 快速建设房产网站免费网站大全黄页动漫
  • 常州外贸网站建设wordpress 获取当前文章标题
  • 河南省建设厅网站职称网视频网站设计模板
  • 遵义花果园网站建设大学网站建设策划书
  • 中国网站建设市场分析wordpress百度模板
  • 中山 网站建设wordpress 积分下载
  • 比一网站建设logo设计说明
  • 辽宁网站建站优化公司电商分销