まあ、私のことはばかな質問です。JSR-310年はMySQLのTINYBLOBにマップされています
私のYear
の列は、直感的なint
列の代わりにtinyblob
にマップされています(Hibernate 5.1(5.2も同じ))。他の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
にマッピングされるが、第2は、そのような値のためにSQL標準であるdatetime
にマッピング正しくあります。
、何がintとしてその年の列を宣言するために私を妨げないので、私の質問は愚かですが、私は、この背後にある理由を理解したいとマッピングするためのコードの3未満のラインを取る方法があるかどう年をintにする。私は複数のデータベースで作業する必要があるので、私は@Column(columnDefinition)
を受け入れることができない、それが唯一の解決策である場合、私はちょうど整数を使用すると、私は
JDBCは、「LocalDate」、「LocalDateTime」、「LocalTime」、「OffsetDateTime」および「OffsetTime」のデータ型マッピングを定義します。型Yearはそのような型ではありません(SQL標準には同等の型はありません)。 –
ありがとう@MarkRotteveel、あなたのコメントは明らかに状況を指摘します。今、推測の観点から、あなたは**個人的に** intは正しいマッピングであることに同意するでしょうか?議論の目的のために、私は自分の列を整数に変更しようとしています。 –
@MarkRotteveel Java 9でですか? JDBC 4.2(Java 8)は新しい 'java.time'クラスのマッピングを定義していないので、私は見つけることができます。 – Andreas