Java Hibernate或hsql不考虑列长度

Java Hibernate或hsql不考虑列长度,java,sql,hibernate,hsqldb,Java,Sql,Hibernate,Hsqldb,我有一个应用程序,它使用hibernate为HSQL db生成表(因为我的应用程序还在开发中)。在我的域模型中,我设置了 @Basic @Column(name = "about", length = 10) private String about; 当我使用DBVisualizer打开我的数据库时,我可以看到所有的设置都是正确的,除了它不工作之外。我的列接受的值长度超过10个字符。当我尝试在DBVisualier中手动运行查询时,它会失败,但hibernate允许它运行 另一个非常奇怪的是

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

@Basic
@Column(name = "about", length = 10)
private String about;
当我使用DBVisualizer打开我的数据库时,我可以看到所有的设置都是正确的,除了它不工作之外。我的列接受的值长度超过10个字符。当我尝试在DBVisualier中手动运行查询时,它会失败,但hibernate允许它运行

另一个非常奇怪的是,当我使用文件(而不是内存中的db)以便可以看到db结构时,我指向DBVisualizer,它以某种方式中断了连接,因此从那一刻起就看不到我在Hibernate中所做的更改。一切仍然正常,我只是看不到DBVisualizer中的更改,但我可以在应用程序中看到

有人知道这种奇怪的行为吗

干杯

更新

休眠配置

    <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>
org.hsqldb.jdbcDriver
jdbc:hsqldb:mem:test
sa
org.hibernate.dialogue.hsql方言
创造
真的

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

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


(我的重点)

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

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


(强调我的)

我补充了这一点,但它没有起任何作用。我仍然可以添加更多的文本,然后我应该。如果使用DBVisualizer之类的工具并编写查询,则会强制执行该大小,但如果使用hibernate,则不会说必须在创建数据库之后、添加数据之前设置该属性。确保您遵守了这个规则。我刚刚在配置文件中添加了属性,所以我想应该在到期时调用它。另外,为什么DBVisulisator在适当的长度下工作而不休眠:是否可能是DBV在执行此操作而不是HSQL?不知道。但我想不应该叫它。按照文档中的建议,在定义表之前,我会显式地调用它。我如何显式地调用它?Hibernate正在为我生成一切。thx的帮助btwI已经补充了这一点,但它没有做任何事情。我仍然可以添加更多的文本,然后我应该。如果使用DBVisualizer之类的工具并编写查询,则会强制执行该大小,但如果使用hibernate,则不会说必须在创建数据库之后、添加数据之前设置该属性。确保您遵守了这个规则。我刚刚在配置文件中添加了属性,所以我想应该在到期时调用它。另外,为什么DBVisulisator在适当的长度下工作而不休眠:是否可能是DBV在执行此操作而不是HSQL?不知道。但我想不应该叫它。按照文档中的建议,在定义表之前,我会显式地调用它。我如何显式地调用它?Hibernate正在为我生成一切。谢谢你的帮助