web-dev-qa-db-ja.com

スプリングブートでHibernateを使用して自動UUIDを生成する方法

私が達成しようとしているのは、DB挿入時に自動的に割り当てられるUUIDを生成することです。 id値を生成する「id」という名前の主キー列に似ています。

モデル値は次のようになります。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(nullable = false)
private Long id;


@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "uuid", columnDefinition = "BINARY(16)")
private UUID uuid;

しかし、DBの挿入が完了すると。 「uuid」は空です。

ヘルプは大歓迎です。そして、私が明白な愚かな質問をしているなら、すみません。

10
mattts

@PrePersistなどのイベントを使用してUUIDフィールドにデータを入力できます https://docs.jboss.org/hibernate/orm/4.0/hem/en-US/html/listeners.html

しかし、なぜオブジェクトが作成されたときにuuidを割り当てないのかuuid = UUID.randomUUID()?

10
Bartun

試してもらえますか?

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id", columnDefinition = "VARCHAR(255)")
    private UUID id;
17
fg78nc