String 地图<;字符串,字符串>;使用Hibernate

String 地图<;字符串,字符串>;使用Hibernate,string,hibernate,mapping,String,Hibernate,Mapping,我看的每一个地方似乎都有过时的版本,不再有效。 我的问题似乎很简单。我有一个Java类,它映射到derby数据库。我正在使用注释,并且成功地创建了数据库中的所有其他表,但是在这个特定的示例中,我只需要一个映射,它不使用任何其他类,只使用两个简单的字符串值。我在尝试我在网上找到的所有东西时遇到了各种各样的错误 有人知道一种不使用不推荐的注释的简单方法吗 提前谢谢 Hibernate注释文档的部分描述了必要的注释。您需要执行以下操作: @Entity public class MyEntity {

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

有人知道一种不使用不推荐的注释的简单方法吗

提前谢谢

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

@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() {

    ...
}
@实体
公共类MyEntity{
...
@ElementCollection//这是一个原语集合
@MapKeyColumn(name=“key”)//映射“key”的列名
@Column(name=“value”)//映射“value”的列名
公共地图getMyMap(){
...
}

我使用了这些注释并为myMap创建了一个单独的实体。我得到了一个错误:无法将java.lang.Long字段AttributeValueRange.id设置为java.lang.String。这里可能有什么问题?我认为应该是
@MapKeyColumn
而不是
@MapKey
,当键是值的属性时,使用后者。参见ch提供了有关如何自定义集合表/列名称的注释