Hibernate或hsql不尊重列长度

时间:2012-05-26 11:24:14

标签: java sql hibernate hsqldb

我有一个使用hibernate生成表的应用程序(因为我的应用程序仍在开发中),用于HSQL db。在我的域模型中,我已经设置了

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

当我使用DBVisualizer打开我的数据库时,我可以看到一切都已正确设置,除非它不起作用我的列接受超过10个字符长的值。当我尝试在DBVisualier中手动运行查询时它会失败,但是hibernate让它运行。

同样非常奇怪的是当我使用该文件(而不是内存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>

1 个答案:

答案 0 :(得分:4)

您的问题可能来自HSQLDB中的限制,如the documentation中所述:

  

HSQLDB数据库最初是在没有的传统模式下创建的   强制列大小和精度。您可以设置属性:   sql.enforce_strict_size = true以启用此功能。当这个   属性已设置,任何提供的列大小和精度   强制执行数字和字符类型(CHARACTER和VARCHAR)。使用   命令,SET PROPERTY“sql.enforce_strict_size”TRUE之前一次   定义表格。

(强调我的)