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

将tinyint映射为布尔休眠

咸臻
2023-03-14
问题内容

我在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

问题答案:

从我在这里读到的内容:

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;


 类似资料:
  • 我正在尝试将一个PostgreSQL表迁移到一个包含所有数据的MySQL,但由于有两列,我无法迁移。这些列在Postgresql表中作为布尔值,并且这些列中的值为TRUE或FALSE(看起来像字符串)。我在MySQL中创建了一个布尔列,但它不接受真/假数据。对于这些真/假值,我应该使用什么来代替布尔值?我尝试了tinyint(4),但它不起作用(我必须迁移数据,因为它是真的或假的,而不是t/f或1

  • 我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔

  • 问题内容: 哪种列类型最适合在MySQL数据库中使用布尔值?我用,但我的同事用。 问题答案: 这些数据类型是同义词。

  • 几个月前我们开始使用Hazelcast。我们最近开始在生产环境中测试它,现在大约每周看到一次这个异常: 2020-02-11 12:10:00,084upport.invokeNoDataMemberInClusterException:无法找到调用的目标!分区所有者为空,但无法分配分区,因为集群中的所有节点都是精简成员。upport.java:467upport.java:406com.haze

  • 问题内容: 我需要预先将没有实现接口的枚举映射到现有数据库,该数据库使用将该枚举存储在与所有者类相同的表中。 在这种情况下应如何处理映射?持久化到数据库不会改变,因为实现该接口的所有枚举都将具有不同的值,但是我不确定应如何从数据库中检索对象(我是否需要自定义映射器,它将尝试实例化一个使用指定的enum类进行枚举吗?Hibernate是否本身支持此功能?)。 问题答案: 可以创建一个自定义(例如th

  • 问题内容: Hibernate提供的注释支持使用或两种类型的映射。当我们使用映射时,它使用的“名称” 而不是Enum 的表示形式。在数据库列仅包含一个字符的情况下,这是一个问题。例如,我有以下枚举: 当我坚持枚举使用,即休眠尝试在数据库中存储的值是开放的。但是,我的数据库列仅包含一个字符,因此会引发异常。 克服这个问题的一个办法是改变枚举类型持有单个字符(如,代替,)。但是,这降低了可读性。有什么