这是我的 JPA2/Hibernate 定义:
Code:
@Column(nullable = false)
private boolean enabled;
在 MySql 中,此列被解析为 bit(1) 数据类型 - 这对我不起作用。对于遗留问题,我需要将 boolean 值映射到 tinyint 而不是一点点。但我看不到更改默认数据类型的可能性。有吗?
最佳答案
@Type 注解是一个 Hibernate 注解。
在完整的 JPA2(带有 Hibernate 3.6+)中,将 boolean 字段映射到 TINYINT(1) SQL 类型而不是 BIT(1) 的方法是使用 columnDefinition 属性。
@Column(nullable = false, columnDefinition = "TINYINT(1)")
private boolean enabled;
nb:length属性在这种情况下似乎没有作用,那么我们使用(1)语法。
使用 Hibernate 4.0+,这种语法可能会导致如下运行时错误:
Wrong column type Found: bit, expected: TINYINT(1)
似乎在这种情况下,您唯一的方法是在 MySQL 数据源连接字符串中使用 tinyInt1isBit=false,如下所示:
jdbc:mysql://server_host:3306/database?tinyInt1isBit=false
顺便说一句,您现在可以像这样使用长度属性:
@Column(nullable = false, columnDefinition = "TINYINT", length = 1)
private boolean enabled;
关于java - Hibernate JPA、MySQL 和 TinyInt(1) 用于 boolean 而不是位或字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383169/