Ich habe einen Dienst, der "Benutzerprofile" unter verschiedenen Detaillierungsgrad oder verschiedenen Ausführlichkeitsmodi liefern kann.JAXB/EclipseLink: Typ dynamisch auflösen
Diese Benutzerprofile sind in einer Datenbank mit JPA2 synchronisiert und alles funktioniert gut. Mit MOXy (EclipseLink) serialisiere ich auch die Profile in XML, und alles funktioniert auch hier gut.
Die Ausführlichkeitsmodi (KURZ, ZUSAMMENFASSUNG, VOLL) werden jedoch durch das Vorhandensein oder Nichtvorhandensein bestimmter Elemente in den in XML serialisierten Benutzerprofilen implementiert (z. B. sollte das Element QueryHistory bei Verwendung des Ausführlichkeitsbereichs KURZ nicht serialisiert werden) Modus).
In wenigen Worten: Ich möchte zu einem JAXBContext angeben, dass einige Elemente nicht serialisiert werden müssen und ich es zur Laufzeit angeben möchte.
Wenn ich gut verstanden, MOXy Extensible Models - Refresh http://blog.bdoughan.com/2011/06/moxy-extensible-models-refresh-example.html ist in der Lage, das zu tun, aber ist hier jemand eine einfachere Möglichkeit, diese Funktion zu implementieren wissen?
Vielen Dank für die Antwort. Allerdings verstehe ich nicht, wie man eine Zuordnungsdatei über mein vorhandenes Modell verwendet. Eigentlich könnte das beste sein, das Modell zu haben (klassische JPA-Entitäten), und dann eine Mapping-Datei verwenden, um das Modell zu beschneiden. Aber wie ich es getestet habe, wird die Mapping-Datei nicht berücksichtigt. Sogar mit einem JAXBHelper.getJAXBContext (jc) .refeshMetadata(); – njames
@njames - Ich habe meine Antwort mit einer Strategie aktualisiert, die Sie verwenden können. Ich empfehle, verschiedene Instanzen von JAXBContext für die verschiedenen Mapping-Ebenen zu verwenden, anstatt die Metadaten zu aktualisieren. –
Danke für Ihre klare Antwort! aber ich habe schon so gearbeitet. Meine Frage ist: Wie ich ein vorhandenes JPA/JAXB-Modell mit annotierter Klasse habe, gibt es eine Möglichkeit, eine Zuordnungsdatei zu verwenden, um das vorhandene Modell zu "überschreiben"? Meine Bedenken ist, dass ich nicht auf das Modell ändern kann (noch Annotationen entfernen, um nur Mapping-Dateien zu verwenden) – njames