一尘不染

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

hibernate

这是我的JPA2 / Hibernate定义:

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

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


阅读 483

收藏
2020-06-20

共1个答案

一尘不染

试试吧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)")将有效,而无需任何数据库更改。

2020-06-20