【问题标题】:Saving Entity with a Map使用地图保存实体
【发布时间】:2018-04-12 19:55:10
【问题描述】:

有什么办法可以同时保留一个实体和它的地图吗?

例如这个例子

public class Test {

    private @Id @GeneratedValue(strategy = AUTO) Long id;
    private String name;

    @ElementCollection(targetClass = Long.class)
    @CollectionTable(name = "test1_id")
    @MapKeyColumn(name = "test_id")
    @Column(name = "test")
    private Map<Long, Long> map = new HashMap<>();
}

所以当我执行test.getMap().put(1L, 2L) 然后testRepository.save(test) 时,它会保存实体和地图?

【问题讨论】:

  • 你到底想做什么?你想做一个外键约束还是?是的,有办法,你能解释一下你想要实现的目标吗
  • 我想在保存test实体时将键和值保存在test1_id表中
  • 您不能将Map 实现直接保存到数据库中,您可以创建2 个差异列,1 个用于Map 键,1 个用于Map
  • 您的 JPA 提供者将能够将 Map 保存在单独的表中,是的...具有 3 列(FK 返回所有者、键、值)。问题是?

标签: java jpa spring-data-jpa


【解决方案1】:

也许你应该重构你的实体。我会在另一个实体中转换地图,其中包含两个 long 类型的字段。之后,我会将这两个实体与@OneToMany 关系联系起来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 2011-08-03
    • 2021-07-09
    相关资源
    最近更新 更多