【问题标题】:How to put a custom type in Hibernate如何在 Hibernate 中放置自定义类型
【发布时间】:2019-12-09 22:25:12
【问题描述】:

我正在使用 Hibernate、JPA 和 Spring Boot。

我想保留一个“版本”类型的自定义对象。 “版本”是一个处理复杂的对象,但它在表中对应于一个简单的 VARCHAR 字段。我能够从 String 构造 Version 并从 Version 对象构造 String。

class MyEntity {

    @Column("version_sw")
    private Version version; <-- I would like to persist version as a String
}

我正在寻找创建休眠类型的不同方法:

  • UserType :对我来说似乎有点矫枉过正,因为我的对象只映射到数据库中的一列。
  • BasicType(使用 AbstractTypeDescriptor):看起来不错,但不确定这样做是否正确
  • CompositeUserType : 似乎不适合我的需求

有没有一种简单的方法可以做到这一点?

谢谢!!

【问题讨论】:

  • 我不知道这是否是“最佳实践”方法,但您可以将版本字段设置为字符串并将其映射到数据库。然后转到 Version 类并创建两个方法“fromString”和“toString”。并返回您的 MyEntity 类并将 getter、setter 写入版本字段。对于 setter 方法,使用 Version.fromString,对于 getter 方法,使用 Version.toString

标签: java hibernate jpa


【解决方案1】:

如果我理解您只需要将对象转换为字符串并保存在数据库中,您可以使用 JPA 属性转换器,这样您就可以将复杂对象转换为字符串,例如某种 json 并保存桌子上。要在您的系统上使用,您必须将字符串转换为一个对象。
试试这个:https://thoughts-on-java.org/jpa-21-how-to-implement-type-converter/

【讨论】:

  • 完美!谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-12-14
  • 2015-01-12
  • 2014-04-14
  • 1970-01-01
  • 2020-04-17
  • 2014-01-17
  • 2012-12-23
  • 2021-10-30
相关资源
最近更新 更多