JSR-310 年映射到 MySQL 中的 TINYBLOB
JSR-310 Year mapped to TINYBLOB in MySQL
好吧,我的问题很愚蠢。
使用 Hibernate 5.1(5.2 相同)我的 Year
列映射到 tinyblob
而不是人们期望的直观 int
列。其他 JSR-310 列已成功映射。
例如
@Column(name = "ANNO_PROTOCOLLO", nullable = true)
protected Year annoProtocollo;
@Column(name = "CREATED", nullable = false, updatable = false, insertable = true)
protected LocalDateTime created = LocalDateTime.now();
第一列映射到 tinyblob
,但第二列 正确地 映射到 datetime
,这是此类值的 SQL 标准.
同样,我的问题很愚蠢,因为没有什么能阻止我将 Year 列声明为 int,但我想了解这背后的原因,以及是否有一种方法 少于 3 行代码 以将 Year 映射到 int。因为我需要在多个数据库上工作,所以我不能接受 @Column(columnDefinition)
,如果这是唯一的解决方案,我将只使用 Integer 并接受它,就像我以前做的那样
简单的原因是他们没有为Year
提供特定的映射,所以你得到的是对象序列化的默认映射to/from 字节,即一个 BLOB。
您可以实现自定义类型以提供映射。
参见 Hibernate Domain Model Mapping Guide - Custom BasicTypes。
好吧,我的问题很愚蠢。
使用 Hibernate 5.1(5.2 相同)我的 Year
列映射到 tinyblob
而不是人们期望的直观 int
列。其他 JSR-310 列已成功映射。
例如
@Column(name = "ANNO_PROTOCOLLO", nullable = true)
protected Year annoProtocollo;
@Column(name = "CREATED", nullable = false, updatable = false, insertable = true)
protected LocalDateTime created = LocalDateTime.now();
第一列映射到 tinyblob
,但第二列 正确地 映射到 datetime
,这是此类值的 SQL 标准.
同样,我的问题很愚蠢,因为没有什么能阻止我将 Year 列声明为 int,但我想了解这背后的原因,以及是否有一种方法 少于 3 行代码 以将 Year 映射到 int。因为我需要在多个数据库上工作,所以我不能接受 @Column(columnDefinition)
,如果这是唯一的解决方案,我将只使用 Integer 并接受它,就像我以前做的那样
简单的原因是他们没有为Year
提供特定的映射,所以你得到的是对象序列化的默认映射to/from 字节,即一个 BLOB。
您可以实现自定义类型以提供映射。
参见 Hibernate Domain Model Mapping Guide - Custom BasicTypes。