2011-02-09 8 views
1

Oracleデータベースには、 "KEY"、 "VALUE"の列を持つ単純なテーブルがあります。 このテーブルをJavaコードにマップしたいのですが、 JPAでこれをまっすぐ実行していますか?または手動で行う必要がありますか?データベーステーブルをハッシュテーブルにマップ

ありがとう、 ray。

答えて

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; 
} 

あなたのテーブルが大きすぎる場合、あなたはメモリの問題を抱えて終わるかもしれないことを心に留めておくようにしてください。

+0

"について(KeyValuePairののkVp:query.getResultListは())" KeyValuePairのkVpのは何として参照するべきか? – rayman

+0

'KeyValuePair'は、JPAを介して移入する永続クラスです。 –

2

キーと値は、基本的なまたは埋め込み型であるなら、あなたは

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

を使用したい、彼らはentitesているなら、あなたは以下のためのドキュメントを見てしたいので、あなたが最もあるかを選択することができます適切な。

@OneToMany 
@ManyToMany 
@MapKey 
@MapKeyClass 
+0

キーと値はStringです。私はあなたが上記の(@elementCollection、CollectionTable ..)と述べたannotionsを見つけることができませんでしたいくつかの例を渡すことができますか? – rayman

+0

@rayman - JPA2アノテーション( 'javax.persistence')です。 JPA1しか持っていない場合、ベンダー固有の選択肢がありますが、そうでなければPabloの答えのような手動マッピングに落ちる必要があります。 – OrangeDog

関連する問題