【问题标题】:Mapping Map<String,String> using Hibernate使用 Hibernate 映射 Map<String,String>
【发布时间】:2011-10-20 07:00:42
【问题描述】:

似乎在我所见的任何地方,都有过时的版本不再起作用。 我的问题似乎很简单。我有一个 Java 类,它映射到一个 derby 数据库。我正在使用注释,并成功地在我的数据库中创建了所有其他表,但是在这个特定的示例中,我只需要一个不使用任何其他类的 Map,只需要两个简单的字符串值。我在尝试在网上找到的所有内容时遇到了所有类型的错误。

有没有人知道不使用过时注释的简单方法?

提前致谢!

【问题讨论】:

    标签: string hibernate mapping


    【解决方案1】:

    Hibernate Annotations 文档的Chapter 2.2.5.3.4 描述了必要的注释。您需要执行以下操作:

    @Entity
    public class MyEntity {
        ...
    
        @ElementCollection // this is a collection of primitives
        @MapKeyColumn(name="key") // column name for map "key"
        @Column(name="value") // column name for map "value"
        public Map<String,String> getMyMap() {
    
        ...
    }
    

    【讨论】:

    • 我使用了这些注释并为 myMap 创建了一个单独的实体。我收到此错误:无法将 java.lang.Long 字段 AttributeValueRange.id 设置为 java.lang.String。这可能是什么问题?
    • 我觉得应该是@MapKeyColumn而不是@MapKey,后者在key是value的属性时使用。
    • 请参阅stackoverflow.com/questions/3393649/…,其中提供了有关如何自定义集合表/列名称的注释
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2010-10-25
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多