JPA Map< String,String []>映射 [英] JPA Map<String,String[]> mapping

查看:97
本文介绍了JPA Map< String,String []>映射的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在不使用Hibernate的类的情况下在JPA中映射地图?

How can I map a Map in JPA without using Hibernate's classes?

public Map<String, String[]> parameters = new HashMap<String, String[]>();

谢谢.

推荐答案

示例实现:

@Entity
@Table(name = "MAP") //optional
public class Parameters {

    @Id
    @Column(name = "\"KEY\"") //optional
    private String id;

    @ElementCollection
    @CollectionTable( //optional
        name = "MAP_VALUES", 
        joinColumns = { @JoinColumn(name="MAP_KEY") }
    ) 
    private Collection<String> collection;

    public Parameters() { }

    public Parameters(String key, Collection<String> values) {
        this.id = key;
        this.collection = values;
    }

    public Collection<String> values() {
        return collection;
    }

    // ...
}

可以将实体实例插入数据库,如下所示:

The entity instances can be inserted into the database as follows:

em.persist(new Parameters("first", Arrays.asList("a", "b", "c")));
em.persist(new Parameters("second", Arrays.asList("d", "e", "f")));
...

这将在数据库中产生两个表:

This will produce two tables in the database:

MAP       MAP_VALUES

KEY       MAP_KEY COLLECTION
------    ------- ----------
first     first   a
second    first   b
          second  c
          second  d

MAP_VALUES表中的

MAP_KEY列是外键,并引用MAP表.

MAP_KEY column in the MAP_VALUES table is the foreign key and refers to the MAP table.

可以按以下方式检索内容:

Contents can be retrieved as follows:

Parameters entry = em.find(Parameters.class, "second");
List<String> values = entry.values();
...

String query = "SELECT p FROM Parameters p";
List<Parameters> entries = em.createQuery(query, Parameters.class)
                             .getResultList();
List<String> values = entry.values();
...

这篇关于JPA Map&lt; String,String []&gt;映射的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆