2016-12-01 5 views
1

を返す私はJPAを使用しています、私はこれを呼び出すと、私はこのJPA NamedQuery私は後ろにオブジェクトを取得する特定の列を選択し、クラスタイプ

@NamedQuery(name="Manifest.findAll", query="SELECT m FROM Manifest m") 

などの基本的な名前付きクエリを持って、

entityManager.createNamedQuery("Manifest.getManifestInfo").getResultList() 

その後、私は名前だけを取得し、別の名前のクエリを持っているこの

[{id:"1", name:"foo"},{id:"2", name:"bar"}] 

しかし、のようなリスト

@NamedQuery(名前= "Manifest.getManifestName"、クエリ= "マニフェストメートルFROM m.nameを選択")

私はそのクエリを実行すると、私は

[["foo"],["bar"]] 

どのように私は2番目を得ることができますを取得します私は私がここでやろうとしています何を表示するには、この単純に作られたそのliek

[{name:"foo"},{name:"bar"}] 

ので、オブジェクト型を返すために、クエリは、実際のテーブルには、多くの列を持っていますが、それは同じ主体です。

どのようにオブジェクトタイプを返すことができますか?

+0

[生成されたJSONで行方不明JPAエンティティ属性名]の可能な重複(http://stackoverflow.com/questions/27482835/jpa-entity-attribute-names-missing-in-生成されたjson) – amishra

答えて

0

JPAのこのユースケースの機能は、Entity Graphです。

このようなあなたのエンティティでそれを定義します。

@NamedEntityGraph(name="nameOnly", attributeNodes={ 
    @NamedAttributeNode("name") 
}) 
@Entity 
public class Manifest { 
... 
} 

あなたは(参照のいずれかのロードまたはフェッチのグラフのように、そのままあなたのクエリ自体を残して、それを実行する前に、クエリへのエンティティのグラフを適用したいです説明のために上記のリンク):

EntityGraph<EmailMessage> eg = em.getEntityGraph("nameOnly"); 
entityManager.createNamedQuery("Manifest.getManifestInfo").setHint("javax.persistence.loadgraph", eg).getResultList() 
関連する問題