2

我有一个在 Firebird 2.0 中运行的旧数据库,我需要将 SmallInt 列映射到一个布尔类型,当它SmallInt = 0False时,SmallInt = 1它是True.

我还需要使用 Hibernate Annotations 来完成。

我正在使用休眠 3.6。

有小费吗?

提前致谢。

4

1 回答 1

5

再搜索一点后,我可以org.hibernate.type.NumericBooleanTypehttp://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/types.html#types-value-basic上找到这个休眠类型

我试图以这种方式进行映射:

@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean field;

但是,这不起作用,因为 Hibernate 抛出了这个异常:

org.hibernate.HibernateException: Wrong column type in %TABLE_NAME% for column %COLUMN_NAME%. Found: smallint, expected: integer

因此,我尝试强制定义此列,以这种方式映射:

@Column(columnDefinition = "SMALLINT")
@Type(type = "org.hibernate.type.NumericBooleanType")
private Boolean field;

现在这就像一个魅力。

于 2012-07-31T15:14:56.290 回答