当前位置: 首页 > 面试题库 >

Hibernate或hsql不尊重列长度

伍弘盛
2023-03-14
问题内容

我有一个使用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一次。

(强调我的)



 类似资料:
  • 我有两个实体 和 此映射: 最近增加了。 在运行应用程序时,应用程序崩溃,错误是:通过JDBC语句执行DDL“alter table documents add debt__idbigint not null”时出错 我检查了Hibernate发送到数据库的sql查询,它是:更改表文档添加debt_idbigint不null 此查询失败,因为表上已经有记录,因此无法添加不带默认值的不可为空列。 那

  • 问题内容: 我正在尝试学习Hibernate的工作方式,并且几乎陷入了无法接受的学习曲线。我看不到如何使Hibernate尊重我的对象的auto_increment策略。而是使用现有ID(从1开始)覆盖数据库中的条目。 我有一个简单的对象,由定义如下的MySQL表支持: 我已经确认使用SQL()手动插入多个Foo对象是正确的。 我的Java类具有使用如下注释来指定的ID: 然后,我执行一些测试代码

  • 问题内容: 在纯Java SE 6环境中: Eclipse控制台中未显示任何内容。 l.info(“”) 及以上的作品就好了,但低于任何 罚款 只是似乎没有工作。有什么问题吗?TIA。 问题答案: 即使Logger级别设置为ALL,ConsoleHandler(记录器上的默认Handler)仍然具有INFO的默认级别。这来自 JAVA_HOME / jre / lib中 的默认logging.pr

  • 这是过去几天一直困扰我的情况。我在etc/hosts文件中设置了很多开发环境子域,如下所示。。。 然后在我的应用程序/MAMP/conf/apache/额外/httpd-vhosts.conf文件中指定,就像这样... 就在最近,他们都停止了在Chrome(火狐 编辑/更改etc/hosts中的设置无效 我只是不明白为什么Chrome没有将这些地址解析到我本地机器上的那些目录。 .

  • 环境: Eclipse Juno Junit 4.11 maven 3.0.4 问题: 我相信在Eclipse的junit运行器中运行单元测试时遇到了类加载问题。我的具体问题源于这段代码: 上面的代码最终将使用一个类的名称调用,该类位于maven依赖项中(依赖项只是一个java bean的集合)。当我运行mvn测试时,这段代码成功运行,但是,如果我使用eclipse运行junit测试,我会收到一个

  • 我有父实体和一个方向作为具有关系的子实体。我尝试使用Hibernate查询删除超过一周的广告,但得到的结果是: com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityConstraintViolationException:无法删除或更新父行:外键约束失败(.,constraint外键()引用() 用户: 筛选器: 广告: DAO删除方法: