4

Mavenビルドを実行していますが、次の例外がスローされます。

Last cause: Wrong column type in x.clients for column type. Found: tinyint, expected: integer

私はこのようにマッピングしています:

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;

そして、私は次のようにInnoDBを使用して列を作成しています。id int NOT NULL UNIQUE AUTO_INCREMENT

これは大丈夫ではないですか?なぜ彼はtinyintを見つけていると言っているのですか?

4

6 に答える 6

5

私はこの質問が(本当に!)古いことを知っていますが:

TINYINTは8ビット値を表します。バイト/バイトにマップされます。どちらの場合も、最小値は-128、最大値は127(両端を含む)です。

SMALLINTは16ビット値を表します。ショート/ショートにマッピングされます。

INTEGERは32ビット値を表します。int/Integerにマップされます。

BIGINTは64ビット値を表します。long/Longにマップされます。

したがって、整数を使用してtinyintをマップすることはできません。バイトを使用する必要があります。

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

于 2016-06-17T10:48:24.383 に答える
3

基本整数には@Basicを使用します。ただし、IDをLongとして宣言することはいつでも試みることができます。私は通常、IDに常にLongを使用します。識別子のプロパティのマッピングを参照してください。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
于 2012-08-27T23:24:28.760 に答える
1

タイプアノテーションを追加してみてください。

@Type(type = "org.hibernate.type.IntegerType")
于 2012-08-27T22:59:36.287 に答える
1

私はちょうどこの問題を抱えていました、そしてそれは詳細を共有するのに役立つはずです。私の場合に起こっていたのは:

  • @Columnを定義します(。。。definition = "integer")
  • Oracleは「integer」をdecimal(0、-127)に変換しました(またはdecimal(0)、明確ではありません)
  • 'test.hibernate.hbm2ddl.auto'が'validate'である他のアプリケーションを使用します
  • Hibernateは、整数!= 10進数であり、検証が失敗したことを報告します

私の唯一の解決策は、test.hibernate.hbm2ddl.autoを空に保つことでした(未定義= DBは変更されません)。OracleまたはHibernateのバグ(あるいはその両方)かどうかわからない。

于 2015-01-07T22:01:08.197 に答える
0

idこれをフィールドの注釈に追加します。

@Column(columnDefinition = "TINYINT")
于 2012-08-27T21:55:24.870 に答える
0
@Column(columnDefinition = "int")
于 2012-08-27T22:15:41.030 に答える