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

Hibernate JPA,MySQL和TinyInt(1)用于布尔值而不是bit或char

胡嘉歆
2023-03-14
问题内容

这是我的JPA2 / Hibernate定义:

Code:
@Column(nullable = false)
private boolean enabled;

在MySql中,此列解析为bit(1)数据类型-
不适用于我。对于遗留问题,我需要将布尔值映射到tinyint而不是一点点。但是我看不到更改默认数据类型的可能性。有没有?


问题答案:

试试吧NumericBooleanType。由于某种原因,它没有声明的简短类型名称,因此您必须使用:

@Column(nullable = false)
@Type(type = "org.hibernate.type.NumericBooleanType")
private boolean enabled;

这确实映射为INTEGER类型,但可能与TINYINT一起正常工作。

UPDATE:org.hibernate.type.NumericBooleanType不会 不会
在一些RDBMS与TINYINT工作。将数据库列类型切换为INTEGER。或根据需要使用其他Java @Type值或columnDefinition。

在此示例中,Dude的答案@Column(nullable = false, columnDefinition = "TINYINT(1)")将有效,而无需任何数据库更改。



 类似资料:
  • 问题内容: 我经常在一些表中需要存储一个可以为1或0(true或false,等等)的标志。 我以前用过TINYINT。 我应该改用BIT(1)吗?为什么或者为什么不? 问题答案: 如果您使用的是更高版本的mysql版本,那么5.0.3不再是它的别名,但是如果您创建了一个列,它还是会得到。 因此使用或等于,如果表只有1列,则不会有任何好处。 但是,如果您有更多对/错列,我建议您使用,因为将位列的每个

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

  • 问题内容: 我想为库存中的物品设置一个真/假字段。 我想将其设置为布尔值(将其转换为),库存中为1,无库存中为0。 我从供应商那里获取饲料,所以我对自己说:“如果他们通过了多少库存,该怎么办?” 所以我想知道如果我插入一个大于1的数字会发生什么。我假设它将默认为1。 令我惊讶的是,它将允许我保留最大为127的任何数字,超过默​​认值的则为127。 谁能解释为什么? 问题答案: 带符号的数据类型可以

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

  • 问题内容: 在哪种情况下,您会使用哪种?有什么区别吗?持久性引擎通常使用哪一个来存储布尔值? 问题答案: TINYINT是8位整数值,BIT字段可以存储1位BIT(1)和64位BIT(64)之间。对于布尔值,BIT(1)很常见。

  • 我有接收JSON对象的REST资源,该JSON对象是从用户ID到某个布尔值的映射,该布尔值指示该用户是否有错误。 由于我希望有大量的用户,所以我希望通过使用1/0而不是true/false来缩小这个JSON的大小。 我尝试了一下,发现在淡化过程中,Jackson会成功地将1/0转换成true/false,但是有没有办法告诉Jackson(也许使用注释?)将此布尔字段序列化为1/0而不是true/f