sqlサーバーがオブジェクト文字列を保存してuniqueidentifierの失敗に変換するという問題を解決します

1.背景紹介

Webアプリケーションはsshフレームワークを使用し、データベースはsqlserver2014バージョンを使用します。

2.問題:

顧客の要件に応じて、ID列のデータタイプはuniqueidentifierである必要があります。当初、エンティティクラスのIDはjava.lang.Stringになるように設計されていました。マッピングファイル内のIDの拡張メソッドはuuid.hexです。

1
2
3
4
5
6
7
8
9
プライベートの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の保存に失敗しました。

3.解決策:

マッピングファイルのID拡張モードを「割り当て済み」に変更し、プログラムで値を割り当てます。

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); attach
:テーブルを作成するステートメント

1
2
3
4
5
CREATE TABLE tableName

ID UNIQUEIDENTIFIER、
-他のコードを省略
);
補足知識:SQLServerのuniqueidentifierデータタイプの理解

uniqueidentifierは、グローバルに一意の識別子(GUID)として理解できます。newid関数を使用して値を初期化し、文字列定数を次の形式に変換できます(https://blog.51cto.com/14830013/2549657、各xは0〜9)または、af)の範囲の16進数。

たとえば、6F9619FF-8B86-D011-B42D-00C04FC964FFは有効な一意の識別子の値です。

比較演算子は、uniqueidentifier値で使用できます。ただし、2つの値のビットパターンを比較しても、並べ替えはできません。uniqueidentifier値で許可される操作は、比較(=、<>、<、>、<=、> =)とNULLのチェック(ISNULLおよびISNOT NULL)のみです。

他の算術演算子は許可されていません。すべての列の制約と属性(IDENTITYを除く)は、uniqueidentifierデータタイプに使用できます。

1
2
3
宣言は、UNIQUEIDENTIFIER @myid
セット@ MYID = NEWID()
@myidのprint'Valueは+ CAST(varchar型として@myid(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サーバーに保存されたオブジェクト文字列をuniqueidentifierに変換できない問題を解決するため上記の記事は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。スクリプトハウスをサポートできることを願っています。

おすすめ

転載: blog.51cto.com/14308901/2550967