• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解决sql server保存对象字符串转换成uniqueidentifier失败的问题

    一、 背景介绍

    web应用采用的是ssh框架,数据库使用的sql server2014版本。

    二、问题:

    客户要求,ID列的数据类型必须是uniqueidentifier,一开始实体类的ID设计成java.lang.String类型;映射文件中ID的增长方式是uuid.hex

    private java.lang.String id;
    
    public java.lang.String getId(){
    return id;
    }
    
    public void setId(java.lang.String id){
    this.id=id;
    }
    
    id name="id" column="ID"  type="java.lang.String">
    generator class="uuid.hex">/generator>
    /id>

    在执行保存时报错:将字符串uniqueidentifier 时失败。

    三、解决方案:

    将映射文件中ID的增长方式修改为“assigned”,在程序中赋值。

    /*映射文件*/
    
    id name="id" column="ID"  type="java.lang.String">
    generator class="assigned">/generator>
    /id>
    
    /*赋值代码*/
    
    UUID uuid = java.util.UUID.randomUUID();
    object.setId(uuid.toString);
    
    this.save(object);
    

    附:创建表的语句

    CREATE TABLE tableName
      (
        ID UNIQUEIDENTIFIER,
        --省略其他代码
      );

    补充知识:SQLServer中uniqueidentifier数据类型理解

    uniqueidentifier可以理解为全局唯一标示符(GUID),可以使用newid函数初始化值,将字符串常量转换为如下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字)。

    例如,6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 uniqueidentifier 值。

    比较运算符可与 uniqueidentifier 值一起使用。然而,排列并非通过比较两个值的位模式来实现。允许对 uniqueidentifier 值执行的操作只有比较 (=, >, , >, =, >=) 和检查 NULL(IS NULL 和 IS NOT NULL)。

    不允许使用其它算术运算符。所有的列约束及属性(IDENTITY 除外)均允许用于 uniqueidentifier 数据类型。

    declare @myid uniqueidentifier
    set @myid=newid()
    print 'Value of @myid is '+cast(@myid as varchar(255))

    每次运行以上程序返回不同的uniqueidentifier

    uniqueidentifier 数据类型不象IDENTITY 属性那样为新插入的行自动生成新的ID。

    为了得到新的 uniqueidentifier 值,表必须具有一个指定 NEWID 函数的 DEFAULT 子句,或使用 NEWID 函数的 INSERT 语句:

    CREATE TABLE MyUniqueTable
    (UniqueColumn UNIQUEIDENTIFIER DEFAULT NEWID(),
    Characters VARCHAR(10) )
    GO
    INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
    INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
    GO

    以上这篇解决sql server保存对象字符串转换成uniqueidentifier失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • mysql unique key在查询中的使用与相关问题
    • MySQL索引类型Normal、Unique和Full Text的讲解
    • MySQL使用UNIQUE实现数据不重复插入
    • mysql为字段添加和删除唯一性索引(unique) 的方法
    • Mysql中 unique列插入重复值该怎么解决呢
    • uniqueidentifier转换成varchar数据类型的sql语句
    • 详解Unique SQL原理和应用
    上一篇:SQL server 自增ID--序号自动增加的字段操作
    下一篇:详解GaussDB(DWS) explain分布式执行计划的示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解决sql server保存对象字符串转换成uniqueidentifier失败的问题 解决,sql,server,保存,对象,