我有一个使用Hibernate为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>
您的问题可能来自HSQLDB中的限制,如文档中所述:
HSQLDB数据库最初是在传统模式下创建的,该模式 不强制列大小和精度 。您可以设置属性:sql.enforce_strict_size = true启用此功能。设置此属性后,将强制提供任何提供的数字和字符类型(CHARACTER和VARCHAR)的列大小和精度。在定义表之前,请使用命令SET PROPERTY“ sql.enforce_strict_size” TRUE一次。
(强调我的)