时间:2020-10-20来源:www.pcxitongcheng.com作者:电脑系统城
一、 背景介绍
web应用采用的是ssh框架,数据库使用的sql server2014版本。
二、问题:
客户要求,ID列的数据类型必须是uniqueidentifier,一开始实体类的ID设计成java.lang.String类型;映射文件中ID的增长方式是uuid.hex
?1 2 3 4 5 6 7 8 9 |
private java.lang.String id; public java.lang.String getId(){ return id; } public void setId(java.lang.String id){ this.id=id; } |
1 2 3 |
<id name = "id" column = "ID" type= "java.lang.String" > <generator class= "uuid.hex" ></generator> </id> |
在执行保存时报错:将字符串uniqueidentifier 时失败。
三、解决方案:
将映射文件中ID的增长方式修改为“assigned”,在程序中赋值。
?1 2 3 4 5 6 7 8 9 10 11 12 |
/*映射文件*/ <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); |
附:创建表的语句
?1 2 3 4 5 |
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 数据类型。
?1 2 3 |
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 语句:
?1 2 3 4 5 6 7 |
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失败的问题就是小编分享给大家的全部内容了
2023-03-15
SQLserver存储过程写法与设置定时执行存储过程方法详解2023-03-11
sql语句将数据库一条数据通过分隔符切割成多列方法实例2023-03-06
MySQL中的常用树形结构设计总结最详细的 SQLSERVER ALWAYSON配置教程 一、准备工作: 二、搭建故障转移群集 三、搭建数据库AlwaysOn 四、过程中可能遇到的问题...
2023-03-06
2.1破解的时候,先要断网,然后再操作,按如图打开界面,点击Manage License 2.2点击Activate 2.3打开SQL.Prompt.Keygen.exe,将生成的注册码拷贝到输入框内,然后点击Activate 2.4 继续点击Activate manually 2.5 按如下步骤操...
2023-03-06