sqlserver字符串判断函数(解决sql server保存对象字符串转换成uniqueidentifier失败的问题)
sqlserver字符串判断函数
解决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失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
- SqlServer类似正则表达式的字符处理问题(SqlServer类似正则表达式的字符处理问题)
- mysql子查询用法(MySQL 子查询和分组查询)
- navicat premium连接mysql报错(Navicat连接MySQL错误描述分析)
- SQLServer设置客户端使用IP地址登录的图文详解(SQLServer设置客户端使用IP地址登录的图文详解)
- 用mysql语句写python学生管理系统(Python基于mysql实现学生管理系统)
- mysql exists的用法(Mysql exists用法小结)
- mysql8.0.15安装详细教程(Mysql8.0.22解压版安装教程小白专用)
- mysql中的null和空值的区别(解决mysql使用not in 包含null值的问题)
- SQL Server中查看未释放的游标
- sqlserver技术文档(sql server2016里面的json功能浅析)
- mysql把重复数据删掉(mysql查找删除重复数据并只保留一条实例详解)
- sqlserver表分区缺点(SQL Server 公用表表达式CTE实现递归的方法)
- navicat连接mysql是远程连接吗(详解Navicat远程连接mysql很慢)
- laravel数据表配置(laravel实现按月或天或小时统计mysql数据的方法)
- sparksql的string转日期格式(将string类型的数据类型转换为spark rdd时报错的解决方法)
- MySQL中NULL和空值的区别
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
- 14岁丧父 20岁丧母,从苦难走向辉煌的银泰创始人沈国军(14岁丧父20岁丧母从苦难走向辉煌的银泰创始人沈国军)
- 银泰集团董事长沈国军获评 北京影响力 十大企业家(银泰集团董事长沈国军获评)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
- 哪几个历史人物被影协主席李雪健演的活灵活现(哪几个历史人物被影协主席李雪健演的活灵活现)
热门推荐
- css3导航条推荐(使用CSS3制作倾斜导航条和毛玻璃效果)
- 如何用tomcat部署web项目(一文搞懂如何部署启动多个tomcat并移植项目)
- pythonhtml文件分析(对Python3 解析html的几种操作方式小结)
- access标签名称属性(htaccess 防盗链,防止目录浏览等10大技巧)
- h5开发app缺点(H5唤醒APP实现方法及注意点总结)
- curl怎么设置方法(关于Curl在Swoole协程中的解决方案详析)
- js三级联动列表(基于JavaScript实现年月日三级联动)
- iframe解决跨域问题(跨域修改iframe页面内容详解)
- 新手在阿里云快速搭建网站(阿里云快速搭建一个静态网站的方法步骤)
- docker容器root密码(docker用root进入容器的操作)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9