当前位置: 移动技术网 > IT编程>开发语言>Java > 解决sql server保存对象字符串转换成uniqueidentifier失败的问题

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

2020年10月23日  | 移动技术网IT编程  | 我要评论
一、 背景介绍web应用采用的是ssh框架,数据库使用的sql server2014版本。二、问题:客户要求,id列的数据类型必须是uniqueidentifier,一开始实体类的id设计成java.

一、 背景介绍

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网