sql server保存対象文字列をuniquedentiferに変換できませんでした。


一、背景紹介
webアプリケーションは、sshフレーム、データベース使用のsql server 2014バージョンを採用しています。
二、問題:
ID列のデータタイプはuniqueindentifeierでなければなりません。最初のエンティティ類の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>
タイム誌の保存エラー:文字列uniquedentifeierを実行中に失敗しました。
三、解決案:
マッピングファイルの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におけるuniqueindentifeerデータタイプ理解
uniqueindentiferは、グローバル一意の識別子(GUID)として理解され、newid関数初期化値を使用して、文字列定数を次のような形式に変換することができます。
例えば、6 F 9619 FF-8 B 86-D 011-B 42 D-00 C 04 FC 964 FFは有効なuniquedentifer値である。
比較演算子はuniquedentifer値と一緒に使用できます。しかし、配列は、2つの値のビットパターンを比較することによって達成されるものではない。uniqueidentifer値に対して実行を許可する操作は、比較(=>、<、>、<=>=)と、NULL(IS NULLとIS NOT NULL)のみである。
他の算術演算子は使用できません。すべての列制約および属性(IDENTITYを除く)は、uniqueindentiferデータタイプのために使用することができます。

declare @myid uniqueidentifier
set @myid=newid()
print 'Value of @myid is '+cast(@myid as varchar(255))
上記のプログラムを実行するたびに異なるuniquedentifeierを返します。
uniqueindentiferデータタイプは、IDENTITY属性のように新たに挿入された行のために自動的に新しいIDを生成しません。
新しいuniqueidentifiier値を得るためには、表は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の保存対象文字列をuniquedentiferに変換しましたが、失敗した問題は小編集が皆さんに共有した内容の全部です。参考にしていただければと思います。どうぞよろしくお願いします。