为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2023-06-14 16:35:02
我使用的 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/对象?
查看完整描述

3 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

您需要像这样设置适当的 Hibernate Generator

@Id

@GeneratedValue(generator = “UUID”)

@GenericGenerator(

    name = “UUID”,

    strategy = “org.hibernate.id.UUIDGenerator”,

)

private UUID id;


查看完整回答
反对 回复 2023-06-14
?
守着一只汪

TA贡献1872条经验 获得超3个赞

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;

.

.

.

}

这肯定会奏效。


查看完整回答
反对 回复 2023-06-14
?
桃花长相依

TA贡献1860条经验 获得超8个赞

你真的是说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;


查看完整回答
反对 回复 2023-06-14
  • 3 回答
  • 0 关注
  • 145 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信