为了账号安全,请及时绑定邮箱和手机立即绑定

使用JPA存储Map <String,String>

使用JPA存储Map <String,String>

饮歌长啸 2019-10-16 11:19:12
我想知道是否可以使用批注attributes使用JPA2 将地图保留在以下类中public class Example {    long id;    // ....    Map<String, String> attributes = new HashMap<String, String>();    // ....}由于我们已经有了一个现有的生产数据库,因此理想情况下,值attributes 可以映射到以下现有表:create table example_attributes {    example_id bigint,    name varchar(100),    value varchar(100));
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

JPA 2.0通过@ElementCollection注释可以支持原语集合,您可以将其与java.util.Map集合支持一起使用。这样的事情应该起作用:


@Entity

public class Example {

    @Id long id;

    // ....

    @ElementCollection

    @MapKeyColumn(name="name")

    @Column(name="value")

    @CollectionTable(name="example_attributes", joinColumns=@JoinColumn(name="example_id"))

    Map<String, String> attributes = new HashMap<String, String>(); // maps from attribute name to value


}

另请参见(在JPA 2.0规范中)

2.6-可嵌入类和基本类型的集合

2.7地图集

10.1.11-ElementCollection批注

11.1.29 MapKeyColumn注释


查看完整回答
反对 回复 2019-10-16
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

  @ElementCollection(fetch = FetchType.LAZY)

  @CollectionTable(name = "raw_events_custom", joinColumns = @JoinColumn(name =     "raw_event_id"))

  @MapKeyColumn(name = "field_key", length = 50)

  @Column(name = "field_val", length = 100)

  @BatchSize(size = 20)

  private Map<String, String> customValues = new HashMap<String, String>();

这是有关如何通过控制列和表名以及字段长度来设置映射的示例。


查看完整回答
反对 回复 2019-10-16
  • 2 回答
  • 0 关注
  • 1441 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信