Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数据库表映射到哈希表_Java_Jpa_Ejb 3.0 - Fatal编程技术网

Java 将数据库表映射到哈希表

Java 将数据库表映射到哈希表,java,jpa,ejb-3.0,Java,Jpa,Ejb 3.0,我在OracleDB中有一个简单的表,其中有列:“KEY”、“VALUE”。 我想在java代码中将这个表映射为 JPA中有没有直接这样做的方法?还是我应该手动操作 谢谢, ray.您可以使用以下代码: public Map<String, String> getAll() { Map<String, String> ret = new HashMap<String, String>(); Query query = em.createQuer

我在OracleDB中有一个简单的表,其中有列:“KEY”、“VALUE”。 我想在java代码中将这个表映射为 JPA中有没有直接这样做的方法?还是我应该手动操作

谢谢,
ray.

您可以使用以下代码:

public Map<String, String> getAll() {
    Map<String, String> ret = new HashMap<String, String>();
    Query query = em.createQuery("select kvp from KeyValuePair kvp");
    for (KeyValuePair kvp : query.getResultList())
    {
       ret.put(kvp.getKey(), kvp.getValue());
    }
    return ret;
}
publicmap getAll(){
Map ret=new HashMap();
Query Query=em.createQuery(“从KeyValuePair kvp中选择kvp”);
for(KeyValuePair kvp:query.getResultList())
{
ret.put(kvp.getKey(),kvp.getValue());
}
返回ret;
}

请记住,如果表太大,可能会导致内存问题。

有一个类,用于将键值表映射到Java属性,如类。

如果键值是基本类型或嵌入类型,则希望使用

@ElementCollection
@CollectionTable(name = "table")
@MapKeyColumn(name = "KEY")
@Column(name = "VALUE")
protected Map<A,B> map;

“for(KeyValuePair kvp:query.getResultList())”KeyValuePair kvp应该是什么?
KeyValuePair
将是您通过JPA填充的持久化类。它们是键,值是字符串。我找不到你上面提到的注释(@elementCollection,CollectionTable..)你能给我举个例子吗?@rayman-它们是JPA2注释(
javax.persistence
)。如果您只有JPA1,则有特定于供应商的备选方案,否则您将不得不退回到手动映射(如Pablo的答案)。
@OneToMany
@ManyToMany
@MapKey
@MapKeyClass