Je suis nouveau à CouchDB et Ektorp (j'ai commencé réellement aujourd'hui pour essayer de travailler avec lui). La documentation plus détaillée que j'ai trouvé me aide pour commencer est celui-ci:Quelqu'un peut-il m'expliquer en cascade et FetchType paresseux dans Ektorp?
http://www.ektorp.org/reference_documentation.html#d100e394
Mon cas d'utilisation est que je veux sauver une classe très complexe en tant que document (j'ai réussi que jusqu'à présent), mais je ne veux pas charger tous les champs tout le temps (puisque certains d'entre eux sont potentiellement de grandes collections d'autres documents plus simples).
Voici un exemple de ce que je (sa juste une classe expérimentale j'utilise pour apprendre à utiliser Ektorp et CouchDB
@JsonSerialize(include = Inclusion.NON_NULL)
public class Player extends CouchDbDocument {
private int xp = 0;
@JsonDeserialize(using = CoinPouchDeserializer.class)
private CoinPouch coins = new CoinPouch(); // subclass of enumMap not
// complex
@DocumentReferences(backReference = "playerId", fetch = FetchType.LAZY, descendingSortOrder = true, orderBy = "itemid")
private Inventory inventory = new Inventory();// subclass of Map<String,
// Item> Items are document
// themselves
}
je parviens à le sauver et obtenir par id très bien. Mais comment pour que je reçois sans inventaire chargement il?
Je voudrais aussi apprécier tout lien vers d'autres ressources que je devrais terminer session à commencer à utiliser CouchDB ou EKTORP avec java (ou scala), acclamations.
Merci pour toute réponse utile.
Et si les articles de l'inventaire ne sont pas des documents et que je ne les référence pas? Puis-je charger un joueur sans son champ d'inventaire? Puis-je dire à ektorp de faire ça? Et comment? –
Oui, vous pouvez complètement supprimer le champ d'être inclus dans les documents si vous marquez avec @ @ JsonIgnore. C'est ce que tu veux dire? Si ce ne sont pas des documents et que vous ne voulez pas stocker cette relation dans CouchDB, vous n'avez pas besoin de l'annotation '@ DocumentReferences'. –
Mmmmh non Je voudrais quelque chose comme: Joueur p = db.get (Player.class, "key", new String [] {"inventory"}); pour ignorer l'inventaire de _that_ call.Et seulement cet appel. Est-ce possible ou dois-je charger tout le document tout le temps? –