【问题标题】:Mapping array column of ids for another entity in Hibernate在 Hibernate 中为另一个实体映射 ID 的数组列
【发布时间】:2022-01-17 07:07:50
【问题描述】:

假设我在 Postgresql 表 entity_b 中有以下数据,它有一个来自表 entity_a 的 id 数组列:

id | e_a_ids[]
---+----------
b1 | a1,a2,a3
b2 | a1,a3

我想在 Hibernate 中用注解映射这两个实体:

@Entity
class EntityA {
    Set<EntityB> entityBs;
}

@Entity
class EntityB {
    Set<EntityA> entityAs;
}

我找到了适用于数组列的自定义休眠类型的示例,但这些示例适用于原语而不适用于其他实体类型。通过引入另一个映射表,我也可以使用普通的 id 列而不是传统的多对多方法的数组列,但那不是这里要问的问题。

如何在 Hibernate 中为 Postgresql 数据库表映射具有另一个实体的 ids 数组列的双向映射?

【问题讨论】:

  • 我不确定 Hibernate 是否支持这一点,至少我不知道有任何这样的映射。用户类型可能是一个选项,但考虑到所有其他要记住的事情(延迟加载、一级缓存、级联等),如果可行的话,这将很难做到。

标签: java hibernate jpa


【解决方案1】:

即使有办法使用 Hibernate 进行这项工作(这可能像 @Thomas 建议的那样很难),您很可能会失去外键约束验证。

postresql 和 mysql(仅 2 个示例)似乎都不支持这一点:
postgresql:PostgreSQL array of elements that each are a foreign key
mysql:Array of foreign keys in one column

所以最好还是坚持使用标准关联表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    相关资源
    最近更新 更多