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