1

これにはかなりの数の質問があるようですが、私の問題を解決するものはありません。

休止状態の注釈を使用して 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 のみを使用しています。これがデッド レポである場合は、新しいバージョンに移動します。

4

1 に答える 1

3

getUuid()問題は、メソッドによって返される型だと思います。String休止状態のドキュメントに従っている必要があります。

uuid:

128 ビット UUID アルゴリズムを使用して、ネットワーク内で一意の文字列型の識別子を生成します (IP アドレスが使用されます)。UUID は、長さが 32 桁の 16 進数の文字列としてエンコードされます。

于 2013-03-31T13:42:43.773 に答える