我在Oracle db中有一个简单的表,其中包含列:“KEY”,“VALUE”。 我想在我的java代码中将此表映射为 无论如何在JPA直接这样做?或者我应该手动完成吗?
谢谢, 射线。
答案 0 :(得分:2)
如果键和值是基本类型或嵌入类型,那么您想使用
@ElementCollection
@CollectionTable(name = "table")
@MapKeyColumn(name = "KEY")
@Column(name = "VALUE")
protected Map<A,B> map;
如果他们是真实的,那么您想查看以下文档,以便您可以选择最合适的文档。
@OneToMany
@ManyToMany
@MapKey
@MapKeyClass
答案 1 :(得分:0)
您可以使用以下代码:
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;
}
请记住,如果你的桌子太大,你最终可能会遇到内存问题。
答案 2 :(得分:0)
Commons Configuration有一个DatabaseConfiguration类,用于将键值表映射到类似Java的属性。