Ich bin relativ neu in Java und würde jede Hilfe zu diesem Thema schätzen!Java/JPA - Eigenschaften für ein Objekt/Entity dynamisch festlegen
Ich habe eine XML-Datei voll von Produkten wie folgt aus:
<product>
<title>Product Title</title>
<colour>Red</colour>
</product>
Und ich habe eine JPA Entity wie folgt aus:
@Entity
public Product extends Model {
public String title;
public String colour;
}
Und ich kann glücklich die XML in mein JPA Objekt analysieren wie dies:
public void parseElement(String elementName, String elementValue) {
if (elementName == "title") {
product.title = elementValue;
}
else if (elementName == "colour") {
product.colour = elementValue;
}
}
jedoch das Problem ist, dass es mehr als 50 Felder pro Produkt gibt, nicht nur die zwei. Ich könnte eine if-else-Anweisung mit einer 50+ Klausel schreiben, dachte mir aber, dass es sich lohnt, hier zuerst nach besseren Alternativen zu suchen!
Da die XML-Elementnamen zu den Eigenschaftsnamen in der Produktklasse direkt anzeigen lassen, dachte ich so etwas wie dies wäre perfekt:
public void parseElement(String elementName, String elementValue) {
product[elementName] = elementValue;
}
Aber Java funktioniert nicht wie diese Notation. Gibt es noch etwas, was ich tun könnte, um ein ähnliches Ergebnis zu erzielen, oder muss ich es aufheben und eine Kollisions-If-Else-Anweisung schreiben?
Jede Hilfe würde sehr geschätzt werden.
Prost!
Akzeptierte Antwort war große Lösung für Problem zu der Zeit. Monate später wurde eine ganze Reihe von Änderungen verlangt, die es wert waren, die Zeit damit zu verbringen, die vorgeschlagenen Bibliotheken auszuprobieren und sie waren großartig - danke für die Vorschläge. Ich arbeite jetzt an der Portierung zu XStream. Prost! –