6
votes

Objectif - Comment @ charger une liste >?

J'ai une entité, avec un champ contenant une liste de références à d'autres entités (toujours 4). J'essaie d'obtenir des entités et de les envoyer pour un JSP pour afficher. Je veux que tous les réfs dans le champ soient chargés également et pour y accéder dans le JSP.

Voici ma structure de base: xxx

quand je suis Extrait de la question comme celle-ci, évidemment, il y a une erreur dans le JSP. A du sens, car les réponses de réponses ne sont pas une liste de réponses, mais de réfs: xxx

Alors, comment accédez aux réponses dans le JSP? est le seul moyen de boucler manuellement à travers les questions et de faire un get () pour le champ de réponse?


0 commentaires

3 Réponses :


8
votes

Vous pourriez trouver ce pratique: xxx

en utilisant ceci, vous pouvez fournir une méthode comme: xxx p> une mise en garde est que c'est qu'il est une liste de lecture. Avec une petite créativité, vous pouvez créer une liste écrite, mais elle nécessite de créer une méthode de réversibilité et une nouvelle liste.Transform (). Si vous voulez juste quelque chose de simple pour JSPS, vous ne voudrez peut-être pas m'inquiéter à ce sujet.

Alternativement, vous pouvez utiliser la propriété "valeur" d'une référence dans la plupart des langues d'expression.


1 commentaires

@stickFigure en ajoutant un réponse (myQuestion.getaSwers (). Ajouter (Newanswer); ) Je reçois une exception ): java.lang.unsupportedoperationException à java.util.abstractlist.add (Source inconnue )



-1
votes

Que se passe-t-il si vous modifiez le type de liste? XXX

Je vérifie et tout va bien, mais dans la documentation ( https://code.google.com/p/Objetify-appengine/wiki/entalities#ref _s) Il n'y a pas de référence à ce cas.

est-il sûr de le faire?


2 commentaires

Vous stockez un objet par opposition à une référence de cette façon. Ne faites pas cela.


Il créera une entité intégrée.



8
votes

Que diriez-vous de quelque chose comme ceci:

@Entity
public class Question {
    @Id Long id;
    @Index String question;
    @Load List<Ref<Answer>> answers = new ArrayList<Ref<Answer>>();

    public List<Answer> loadAnswers()
    {
        return new ArrayList<Answer>(ofy().load().refs(answers).values());
    }
}


5 commentaires

C'est la meilleure réponse à partir de 2015.


La raison en est une mauvaise idée est la fonction LichanSwers () ne fonctionnera que dans le code de contrôle, bien que les bibliothèques clientes générées à l'aide de Appengine contiennent également la fonction Loadanswers () et ne fonctionnera pas du tout dans les clients.


Je pense que cela dépend simplement de vos besoins et du cadre que vous utilisez, et tout le monde n'utilisera pas le moteur App pour générer des clients; L'affiche originale n'a mentionné que les fichiers JSP. Le concept de base devrait toujours être sain, vous risquez de refroidir légèrement le code pour répondre à vos propres besoins.


Merci pour cela . La solution acceptée ne fonctionnait pas.


C'est la meilleure réponse à partir de 2019;)