これにはかなりの数の質問があるようですが、私の問題を解決するものはありません。
休止状態の注釈を使用して UUID を生成しようとしています。
私の注釈は以下のとおりです...
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(name = "uuid", unique = true)
public UUID getUuid() {
return uuid;
}
以下に示すように、pom.xmlでMySQL 5.2とHibernate 3.5.6を使用しています...
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.5.6-Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-annotations</artifactId>
<version>3.5.6-Final</version>
</dependency>
アプリケーションを起動すると、次のエラーが表示されます...
ERROR: org.hibernate.tool.hbm2ddl.SchemaExport - Unsuccessful: create table players (uuid tinyblob not null unique, espnid integer, espnUrl varchar(255), firstname varchar(255), lastname varchar(255), primary key (uuid))
ERROR: org.hibernate.tool.hbm2ddl.SchemaExport - BLOB/TEXT column 'uuid' used in key specification without a key length
正しい注釈は何ですか? 使用している休止状態のバージョンが正しくありませんか? MySQL で何かを間違って使用していますか?
私の方言の詳細は以下のとおりです...
<beans:property name="hibernateProperties">
<beans:props>
<beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect
</beans:prop>
<beans:prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory
</beans:prop>
<beans:prop key="hibernate.show_sql">true</beans:prop>
<beans:prop key="hibernate.hbm2ddl.auto">create</beans:prop>
</beans:props>
</beans:property>
エラーは長さが指定されていないことを意味しますが、これを @Column に入力しても何も変わりません。
hibernate-annotations はそれまでしか使用できないため、古いバージョンの hibernate のみを使用しています。これがデッド レポである場合は、新しいバージョンに移動します。