我有一个使用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>
答案 0 :(得分:4)
您的问题可能来自HSQLDB中的限制,如the documentation中所述:
HSQLDB数据库最初是在没有的传统模式下创建的 强制列大小和精度。您可以设置属性: sql.enforce_strict_size = true以启用此功能。当这个 属性已设置,任何提供的列大小和精度 强制执行数字和字符类型(CHARACTER和VARCHAR)。使用 命令,SET PROPERTY“sql.enforce_strict_size”TRUE之前一次 定义表格。
(强调我的)