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失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
- activiti需要sql语句吗(Activiti-Explorer使用sql server数据库实现方法)
- sqlserver定时计划(sql server deadlock跟踪的4种实现方法)
- sql如何查询进阶(Superset实现动态SQL查询功能)
- SQL replace的使用方法
- zabbix监控sql server集群(zabbix 监控mysql的方法)
- mysql的视图和临时表区别(MySQL 内存表和临时表的用法详解)
- mysqljson字段查询(Mysql 查询JSON结果的相关函数汇总)
- sqlserver数据库实时同步(SQL Server实时同步更新远程数据库遇到的问题小结)
- mysql8.0.25.0安装配置(MySQL8.0.23免安装版配置详细教程)
- sqlserver中复合索引(浅析SQL Server 聚焦索引对非聚集索引的影响)
- sqlserver连接服务器怎么解决(Sql server端口未打开连接不上的解决方案)
- sqlserver数据库如何分页(SQL server分页的4种方法示例很全面)
- python下的sql处理(python中aioysql异步操作MySQL的方法)
- sql server 2016配置管理(SQL Server 2016 配置 SA 登录教程)
- mysql数据类型图解(MySQL数据库主从技术GTID大揭秘)
- mysql长连接释放和不释放的问题(解决MySQL存储时间出现不一致的问题)
- 少儿口才表达影响未来一生,50首经典绕口令和孩子玩出聪明大脑(少儿口才表达影响未来一生)
- 玩网游居然让人更友善 很难以让人置信(玩网游居然让人更友善)
- 学好汉语拼音,从娃娃绕口令抓起,平时还是要多练 收藏好(从娃娃绕口令抓起)
- 仙女们的私藏鲜法大PK 鲜香切块牛肉(仙女们的私藏鲜法大PK)
- 天热没胃口 这道菜开胃又下饭,2个小技巧新手一学就会(这道菜开胃又下饭)
- 指天椒紫苏爆炒牛肉(指天椒紫苏爆炒牛肉)
热门推荐
- docker 改变存储位置方式(修改Docker镜像默认存储位置的方法解决方法)
- mysql怎样建立索引(MySQL创建索引需要了解的)
- mysql8.0.12安装教程图解(MySql8.023安装过程图文详解首次安装)
- java怎么调用支付宝的扫码支付(python实现银联支付和支付宝支付接入)
- sqlserver 多实例怎么算许可(SQL Server使用row_number分页的实现方法)
- dedecms标签解析(Dedecms网站给图片alt属性自动调用标题的方法)
- docker清理脚本(Docker 清理的常用方法及问题)
- python类的init方法(Python操作配置文件ini的三种方法讲解)
- 小白vue教学(尤大大新活petite-vue的实现)
- python函数使用方法高级用法(Python骚操作之动态定义函数)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9