【问题标题】:How to create field in Java which differnet data type and mapping to Hibernate如何在 Java 中创建不同数据类型的字段并映射到 Hibernate
【发布时间】:2018-04-18 09:29:58
【问题描述】:

我正在开发 Spring Boot 应用程序,我需要在对象中创建一个字段,该字段可以具有不同的数据类型,例如 Long、String、Boolean,但我不知道该怎么做。我考虑过 Object 但 Hibernate 无法映射这种类型并保存在 postgres 数据库中。

我想像这样检索 JSON:

{
"field1" : "string"
"value" : true / 124L / "text" <- problem with this field(bool or long or string)
} 

有人有想法吗?

【问题讨论】:

标签: java json database spring hibernate


【解决方案1】:

这应该是可能的,但我不确定这是否是您情况下的最佳设计决策。既然您征求意见,我会推荐一些可能更适合您的用例的选项:

可以考虑使用JSONB,而不是具有多种可能的数据类型的字段,它仍然是数据库表中的单个列,它具有JSON的灵活性。在您的 JSON 结构中,您可以为业务案例的每种可能的数据类型设置单独的字段,但只设置相关的字段并将其存储在 db.xml 中。 Postgres 对 JSONB 类型有很好的支持,并且可以很好地与 Hibernate 配合使用。

如果您尝试实现诸如键/值存储之类的东西,那么您应该检查 postgres 的 hstore 模块并定义您的自定义用户类型,如下所述: Is there a way to query a PostgreSQL hstore with Hibernate/JPQL?

value 字段作为text 数据类型并让另一个字段显示实际数据类型并进行相应解析,这是一个明显但不太好的选择,如下所示: Sane way to store different data types within same column in postgres?

【讨论】:

  • 感谢您的回答。是的,我意识到这不是最好的解决方案,但我有问题要做,但没有指定方法,所以我可以考虑其他解决方案。
猜你喜欢
  • 1970-01-01
  • 2014-07-22
  • 2015-02-06
  • 1970-01-01
  • 2016-08-18
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
相关资源
最近更新 更多