Java 将数据库表映射到哈希表
我在OracleDB中有一个简单的表,其中有列:“KEY”、“VALUE”。 我想在java代码中将这个表映射为 JPA中有没有直接这样做的方法?还是我应该手动操作 谢谢,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
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