猿问

将 UUID 作为 blob 转换为正确的字符串 id hibernate

我使用的 UUID 是我在实体中的 ID (@Id)。是这样的:


import java.util.UUID;

@Table(name="address_book")

@Entity  

public class AddressBook {  

  @Id

  private UUID id;

  private String name;

  .

  .

  .

 }

现在发生的事情是,当我调用 addressBookDao.save(addressBook) 或每当我在数据库中保存数据时,它被存储为:


id, name, isbn, date, username

{blob}, john, isbn-45888, 15-02-2019, david

所以在 id 列中,我在插入的每一行中都写了这个 blob。我认为 UUID 会生成一个随机 ID,而不是将 UUID 的整个 json 对象存储为该 ID 列中的 blob。


我该如何解决这个问题。我想要字符串/随机值而不是 blob/对象?


慕田峪9158850
浏览 146回答 3
3回答

守候你守候我

您需要像这样设置适当的 Hibernate Generator@Id@GeneratedValue(generator = “UUID”)@GenericGenerator(    name = “UUID”,    strategy = “org.hibernate.id.UUIDGenerator”,)private UUID id;

守着一只汪

import java.util.UUID;@Table(name="address_book")@Entity  public class AddressBook {  @Id@GeneratedValue(generator = "uuid2")@GenericGenerator(name = "uuid2", strategy = "uuid2")@Column(name = "name", updatable = false, nullable = false, columnDefinition = "VARCHAR(36)")@Type(type = "uuid-char")private String name;...}这肯定会奏效。

桃花长相依

你真的是说BLOB吗?一个 UUID 是 128 位,当然不符合 LOB 列的条件。例如,您可以在 MySQL 中使用 Binary(16) 列。现在回答你的问题,你需要告诉hibernate如何生成ID值。    @Id    @GeneratedValue(generator = "hibernate-uuid")    @GenericGenerator(name = "hibernate-uuid", strategy = "uuid2")    @Column(name = "id", columnDefinition = "BINARY(16)")    protected UUID id;
随时随地看视频慕课网APP

相关分类

Java
我要回答