使用 JPA 注释通过 hibernate 映射地图的困难

发布于 2024-11-25 09:41:56 字数 443 浏览 1 评论 0原文

关于 JPA @MapKey 元素的语义,我可能不理解一些基本的东西。 我正在尝试保存具有实体键和实体值的映射。架构是自动的 由休眠生成。它生成一个连接表,将值实体映射到 包含实体(具有 Map 属性)并忽略键。 如此有效,它只是将其视为值的集合并忽略键, 据我所知。 我在这里缺少什么? 谢谢

@Entity
public class PracticeMap {
    @javax.persistence.OneToMany(cascade = CascadeType.ALL)
    @javax.persistence.MapKey 
    public Map<KeySample, ValueSample> getMap1() {
        return map1;
    }

    //more unrelated/standard bits here 


}

There is possibly something fundamental I don't understand about the semantics of JPA @MapKey element.
I am trying to save a Map that has entity keys and entity values. The Schema is auto
generated by hibernate. It generates a join table that maps the values entities to
the containing entity (that has the Map property) and ignores the keys.
so effectively it just treats it as a collection of values and ignores the keys,
as far as I can tell.
what am i missing here ?
Thank you

@Entity
public class PracticeMap {
    @javax.persistence.OneToMany(cascade = CascadeType.ALL)
    @javax.persistence.MapKey 
    public Map<KeySample, ValueSample> getMap1() {
        return map1;
    }

    //more unrelated/standard bits here 


}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

狼性发作 2024-12-02 09:41:56

查看@MapKey<的javadoc /a> - 当您需要将值实体的特定字段视为键时使用。

如果您的键和值应该是不同的实体,则需要使用 < code>@MapKeyJoinColumn(在 JPA 2.0 中引入)。

Look at the javadoc of @MapKey - it's used when you need to treat particular fields of the value entity as keys.

If your key and value should be different entities, you need to use @MapKeyJoinColumn (introduced in JPA 2.0).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文