1

HSQL DB用のテーブルを生成するために休止状態を使用するアプリケーションがあります(私のアプリケーションはまだ開発中であるため)。私のドメインモデルで設定しました

@Basic
@Column(name = "about", length = 10)
private String about;

DBVisualizerを使用してデータベースを開くと、機能していないことを除いてすべてが正しく設定されていることがわかります。列は10文字をはるかに超える値を受け入れます。DBVisualierでクエリを手動で実行しようとすると、正常に失敗しますが、休止状態では実行できます。

また、非常に奇妙なのは、db構造を確認できるように(メモリdbではなく)ファイルを使用し、DBVisualizerをポイントすると、接続が切断され、Hibernateからの変更がその瞬間から表示されなくなることです。すべてがまだ機能しているDBVisualizerでの変更はわかりませんが、アプリケーションでは確認できます。

誰かがこの奇妙な振る舞いについて何か考えを持っていますか?

みんなで乾杯

アップデート

Hibernate構成

    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
    <property name="hibernate.connection.url">jdbc:hsqldb:mem:test</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
    <property name="hbm2ddl.auto">create</property>
    <property name="sql.enforce_strict_size">true</property>
4

1 に答える 1

4

問題はおそらく、ドキュメントで説明されているHSQLDBの制限に起因します。

HSQLDBデータベースは、最初は列のサイズと精度を強制しないレガシーモードで作成されます。プロパティsql.enforce_strict_size=trueを設定して、この機能を有効にすることができます。このプロパティが設定されている場合、数値および文字タイプ(CHARACTERおよびVARCHAR)に指定された列サイズと精度が適用されます。テーブルを定義する前に、コマンドSET PROPERTY"sql.enforce_strict_size"TRUEを1回使用します。

(強調鉱山)

于 2012-05-26T11:42:33.533 に答える