質問

私は巨大なデータを含むテーブルを持っています。私は、この表に休止自動バージョニングを追加します。しかし、バージョン管理のために、この表にないヌルの列を追加することにより、膨大なデータに非常に高価です。 HibernateはNULL可能列で動作することができますので、回避策はありますか?それがnull値をインクリメントしようとするため、現在、HibernateはNPEを与えます。 (Hibernateが内部的にこれを管理しているように、クライアント側のバージョン値を変更することは問題外です) その他のバージョン管理startegyのISは、あまりにも歓迎します。事前に感謝します。

役に立ちましたか?

解決

データベースのあなたの香りがそれを許可する場合は、あなたはDEFAULTオプションを使用することができます。これは、Oracleに反している...

SQL> create table t23 as select object_id as id from user_objects;

Table created.

SQL> desc t23
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER

SQL> alter table t23 add hibernate_version_number number default 0 not null;

Table altered.

SQL> desc t23
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 HIBERNATE_VERSION_NUMBER                  NOT NULL NUMBER

SQL> select count(*) from t23 where hibernate_version_number = 0;

  COUNT(*)
----------
       504

SQL>
しかし、あなたはまだベンチマークへのデータの現実的な量に対して、そのパフォーマンスをしたいことがあります。それはあなたの問題を解決しないことがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top