一尘不染

将tinyint映射为布尔休眠

hibernate

我在MySQL表(TINYINT(1))中具有BOOLEAN类型,并且尝试映射实体中的布尔字段,但这会生成异常:

org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: boolean

我将实体中的字段更改为字节并进行了相应的更改,因此它的作用是布尔值,我得到:

org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: tinyint

我尝试@Type在字段上使用注释:

@Type(type = "org.hibernate.type.NumericBooleanType")

但我得到:

org.hibernate.HibernateException: Wrong column type in maegul.users for column admin. Found: bit, expected: integer

阅读 310

收藏
2020-06-20

共1个答案

一尘不染

从我在这里读到的内容:

org.hibernate.HibernateException:maegul.users中列admin的列类型错误。找到:位,预期:整数

似乎Hibernate期待一个整数并且得到了一点。

这意味着您的注释现在是正确的:

@Type(type = "org.hibernate.type.NumericBooleanType")

但也许它已将数据库更新为Bit而不是整数,从而导致错误。

如果您确实需要TinyInt,则可以使用@TypeAND @Column,将其设置为TinyInt类型的Integer:

@Column(columnDefinition = "TINYINT")
@Type(type = "org.hibernate.type.NumericBooleanType")
public boolean admin = true;
2020-06-20