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

这篇文章主要介绍了解决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;
}

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

三、解决方案:

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

/*映射文件*/

/*赋值代码*/

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失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:脚本之家

链接:https://www.jb51.net/article/197824.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/895840.html

(0)
上一篇 2025年1月4日 00:26:25
下一篇 2025年1月4日 00:22:02

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 阿里云如何设置帝国备份王后台数据库

    帝国备份王升级到了5.1版本,相比于以前的版本,设置相对复杂一些,如果你使用的是阿里云空间,且使用的是帝国备份王5.1以上版本,首次设置可能需要耗费一些时间,我尝试了五分钟左右,终于成功正确的设置了帝国备份王后台的各项参数,提供一下方法,节…

    数据库 2025年1月4日
    100
  • 图书管理系统的sqlserver数据库设计示例

    这篇文章主要介绍了图书管理系统的sqlserver数据库设计示例,文中通过E_R图、数据字典、数据库脚本代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 首先,在写数据库时需要遵循以下…

    2025年1月4日
    100
  • SQL Server中的集合运算: UNION, EXCEPT和INTERSECT示例代码详解

    这篇文章主要介绍了SQL Server中的集合运算: UNION, EXCEPT和INTERSECT,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 SQL Server中的集合运算包括…

    2025年1月4日
    100
  • SQL Server异常代码处理的深入讲解

    这篇文章主要给大家介绍了关于SQL Server异常代码处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 SQL Server使用TRY…CATC…

    2025年1月4日
    100
  • sqlserver交集差集的用法详解

    这篇文章主要介绍了sql server 交集,差集的用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 概述 为什么使用集合运算: 在集合运算中比联接查询和EXIS…

    2025年1月4日 数据库
    100
  • 秒懂drop truncate和delete的区别

    这篇文章主要介绍了秒懂drop、truncate和delete的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操…

    数据库 2025年1月4日
    100
  • 详解SQL通配符

    这篇文章主要介绍了SQL 通配符的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下 通配符可用于替代字符串中的任何其他字符。 SQL 通配符 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQ…

    2025年1月4日 数据库
    100
  • 升级php7+后Typecho无法连接数据库探究

    前面我写了衡天主机升级php版本的文章,里面提到了网站配置和文件的完全备份、还原,而在这之前我所有的子站都是正常可以访问的,不常用的子站今天访问时候却发现了异常。这里说的是 typecho 子站 hard man 输入网址后显得不是主页,而…

    数据库 2025年1月4日
    100
  • MYSQL中char和varchar的区别

    这篇文章主要介绍了MYSQL中 char 和 varchar的区别,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 CHAR和VARCHAR类型相似,差别主要在存储,尾随空格和检索方式上。 CHAR和VARCHAR相同的是…

    2025年1月4日
    100
  • MySQL8.0如何快速加列

    这篇文章主要介绍了MySQL8.0 如何快速加列,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下 前言: 很早就听说 MySQL8.0 支持快速加列,可以实现大表秒级加字段。笔者自己本地也有8.0环境,但一直未进行测试。本…

    2025年1月4日
    100

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信