时间:2021-05-02
一、 背景介绍
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失败的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_34721505/article/details/72868763
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
模型实例方法str():在将对象转换成字符串时会被调用。save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句。dele
2.7类型转换1、转换成字符串 所有对象都有toString()方法可以转换成字符串,要注意的是Number类型的toString()方法,它有两种模式,即默
复制代码代码如下:'把字符串转换成数据库SQL语句格式'-------------------------------------------------Fun
json(JavaScriptObjectNotation):轻量级的数据交换(交换的数据转换成与平台无关的)格式java对象转换成json字符串,使用Obje
页面向后台action传递一个json字符串,需要将json字符串转换成Map对象publicMaptoMap(Objectobject){Mapdata=ne