Je donne les résultats suivants Entitégetter Ambigu pour le champ ... bibliothèque de persistance Chambre
public class User {
@PrimaryKey
private final long id;
private String _id;
private String userName;
private String email;
}
Cependant, lorsque je tente de créer une table pour cette entité dans la bibliothèque à l'aide de la persistance de la chambre Android, je reçois l'erreur suivante.
Error:(18, 20) error: Ambiguous getter for Field(element=_id, name=_id, type=java.lang.String, affinity=TEXT, columnName=_id, parent=null, indexed=false). All of the following match: getId, get_id. You can @Ignore the ones that you don't want to match.
Le champ _id
est inclus afin que je puisse traduire directement les réponses de la node.js
api relié à une base de données mongodb
.
Si votre liste de classe est complète, je soupçonne que Room n'aime pas les champs ayant le même nom de base, ne différant que par le préfixe '_'. Pouvez-vous faire quelque chose du côté JSON, comme '@ SerializedName' avec Gson, pour permettre au champ d'avoir un nom différent (par exemple,' mongodb_id')? En outre, votre liste de cours est-elle complète ou y a-t-il des méthodes de lecture que votre liste actuelle ne montre pas? – CommonsWare
vous voulez dire quand j'obtiens la réponse de l'API? va-t-il automatiquement sérialiser tous les champs _id dans mongodb_id? –
Oui, je demande si c'est une possibilité. Je ne sais pas ce que vous utilisez pour votre API de client de service Web. Certains analyseurs JSON fonctionnant sous Android, tels que Gson, prennent en charge les annotations telles que '@ SerializedName', de sorte que le nom dans le JSON peut être différent du nom du champ Java. – CommonsWare