2012-10-21 10 views
6

Ho una grande entità che ho creato in Play! framework in Java e vorrei recuperare solo un campo specifico dal database usando Morphia e MongoDB. L'entità stessa è molto grande e contiene molti campi, quindi vorrei migliorare le prestazioni della mia applicazione recuperando solo un campo da essa.Come recuperare un campo specifico da un'entità utilizzando Morphia e Play framework in Java

So che è possibile, ma non riesco a capire esattamente come farlo ...
Ecco alcuni dei campi che ho nella mia classe Shop:

public String imagePath; 
public String profileImagePath; 
public String Motto; 
@Reference 
public Category primeCategory; 
public boolean isOnline; 

Come si può vedere , il campo primeCategory è un'entità Category che desidero recuperare. ho visto qualcosa che supponiamo per ottenere che nel sito web di Morphia:

Datastore ds = null; 

Shop shop = ds.createQuery(Shop.class).retrievedFields(true, "primeCategory").get(); 

Non sono sicuro di cosa esattamente faccio sto ottenendo qui.

Sarebbe bello se qualcuno potesse spiegarmi se questo è il modo e come esattamente dovrei farlo, oltre a fornire un esempio.

+0

Vorrei assolutamente verificare: Jongo come alternativa ODM. http://jongo.org/ e https://github.com/alexanderjarvis/play-jongo proprio perché non c'è sviluppo molto attivo sul morfina atm. – Marc

+0

Quello che stai facendo sembra corretto. L'oggetto 'shop' restituito dalla query è nullo? In caso contrario, 'shop.primeCategory' è nulla? Tieni presente che stai creando una query che troverà tutti gli oggetti Shop ma stai chiamando 'get()' in modo che tu possa recuperare solo il primo oggetto Shop. – InPursuit

+0

shop and shop.primeCategory non sono nulli. Voglio solo sapere se questo è il modo di farlo o potrebbe essere mi manca qualcosa ... – elad

risposta

6

provare questo

Shop.createQuery().retrievedFields(true, "primeCategory").get() 
+0

Bene, l'oggetto restituito (Negozio) era nullo in tutti i campi, e anche nella primaCategory. :( – elad

0
Shop shop = ds.createQuery (Shop.class).retrievedFields (true,"primeCategory","Other_field_1","Other_field_2").get(); 

Sarebbe recuperare doc come questo:

{ 
    "_id":ObjectId("..."), 
    "primeCategory":{ 
         ... 
        }, 
    "Other_field_1":"....", 
    "Other_field_2":"...." 

} 

E si stanno avendo un buon tentativo.

+0

mi hai confuso con la classe TaskAnalysis Il TaskAnalysis.class deve essere sostituito con Shop - ti preghiamo di modificare la tua answer.class e tutti gli altri campi dell'oggetto negozio saranno nulli. – elad

Problemi correlati