@CollectionOfElements 的 Hibernate Null 值

发布于 2024-09-12 22:00:47 字数 806 浏览 5 评论 0原文

我使用 @CollectionOfElements 将一组属性映射到我的实体。这里的目标是能够提供一个元数据列表,可在查询中使用该列表来提取特定条目。

我已经弄清楚了映射以及如何运行我想要的查询。问题是休眠不会保留空值!


    @CollectionOfElements()
    @JoinTable(name = "plan_attribute", joinColumns = @JoinColumn(name = "plan_id"))
    @MapKey(columns = @Column(name = "attribute_name", nullable = false, length = 255))
    @Column(name = "attribute_value", nullable = true, length = 255)
    public Map getAttributes() {
        return attributes;
    }

    public void setAttributes(Map attributes) {
        this.attributes = attributes;
    }

    public void addAttribute(String name, String value) {
        this.attributes.put(name, value);
    }

例如。 object.addAttribute("someName", null);不会被持久化

有人对如何在不实现键/值对实体来实现这一点的唯一目的是持久化这些值有任何想法吗?

问候,

I'm mapping a set of attributes to my entity using @CollectionOfElements. The goal here is to be able to provide a meta data list that can be used in a query to pull specific entries.

I've figured out the mapping and how to run the queries I want. The problem is that hibernate won't persist null values!


    @CollectionOfElements()
    @JoinTable(name = "plan_attribute", joinColumns = @JoinColumn(name = "plan_id"))
    @MapKey(columns = @Column(name = "attribute_name", nullable = false, length = 255))
    @Column(name = "attribute_value", nullable = true, length = 255)
    public Map getAttributes() {
        return attributes;
    }

    public void setAttributes(Map attributes) {
        this.attributes = attributes;
    }

    public void addAttribute(String name, String value) {
        this.attributes.put(name, value);
    }

Eg. object.addAttribute("someName", null); will not be persisted

Anyone have any thoughts on how to accomplish this without implementing a key/value pair entity for the sole purpose of persisting these values?

Regards,

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

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

发布评论

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

评论(1

九命猫 2024-09-19 22:00:47

引用OP评论:

Hibernate 3.3.2.GA,所以是的 - 看起来
就像那个错误适用一样。我能够
通过明确解决该问题
将空值设置为“*”字符
实际上效果很好并且
比“null”更适合我
用例。

在进行接近投票之前,这个答案应该将其从未回答的问题列表中删除。

Quoting from the OP comments:

Hibernate 3.3.2.GA, so yes - it looks
like that bug applies. I was able to
workaround the issue by explicitly
setting null values as a '*' character
which actually works quite well and
fits better than 'null' for my
use-cases.

This answer should get this off the list of unanswered questions until a close vote is made.

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