如何在Java中创建不同的字段,该字段具有不同的数据类型并映射到Hibernate



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

我想像这样检索 JSON:

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

有人有想法吗?

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

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

如果您尝试实现键/值存储之类的东西,那么您应该检查 postgres 的 hstore 模块并定义您的自定义用户类型,如下所述: 有没有办法使用 Hibernate/JPQL 查询 PostgreSQL hstore?

一个明显但不太好的选择,将value字段作为text数据类型,并让另一个字段显示实际数据类型并相应地进行解析,如下所示: 在 postgres 的同一列中存储不同数据类型的理智方法?

最新更新