Ich möchte pojo Objekt als JSON-Dokument in Marklogic mit Java-API einfügen. Ich verwende this Beispiel als Referenz, die Pojo als XML-Dokument einfügen ist.Marklogic - Pojo als JSON-Dokument in Java API einfügen
Ich kann meine Pojo-Klasse nicht mit dem Handle für JSON registrieren.
public class JSONDocument {
public static void main(String[] args) throws JAXBException, IOException {
run(Util.loadProperties());
}
@JsonRootName(value = "product")
static public class Product {
@JsonProperty
private String name;
@JsonProperty
private String industry;
@JsonProperty
private String description;
public Product() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIndustry() {
return industry;
}
public void setIndustry(String industry) {
this.industry = industry;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public static void run(ExampleProperties props) throws JAXBException {
runShortcut(props);
System.out.println("Wrote, read, and deleted "+Product.class.getName()+" using JAXB");
}
public static void runShortcut(ExampleProperties props) throws JAXBException {
// register the POJO classes like JAXB - JAXBHandle.newFactory(Product.class)
DatabaseClientFactory.getHandleRegistry().register(
// Need help here for - registering pojo for JSON
);
// create the client
DatabaseClient client = DatabaseClientFactory.newClient(
props.host, props.port, props.writerUser, props.writerPassword,
props.authType);
// create a manager for JSON documents
JSONDocumentManager docMgr = client.newJSONDocumentManager();
// create an instance of the POJO class
Product product = new Product();
product.setName("FashionForward");
product.setIndustry("Retail");
product.setDescription(
"(Shortcut) Creates demand with high prices, hours from midnight to dawn, and frequent moves");
// create an identifier for the document
String docId = "/example/"+product.getName()+".json";
// write the POJO as the document content
docMgr.writeAs(docId, product);
// ... at some other time ...
// read the POJO from the document content
product = docMgr.readAs(docId, Product.class);
// log the persisted Json document
System.out.println(docMgr.readAs(docId, String.class));
// release the client
client.release();
}
}
Wenn ich in diesem Beispiel falsch bin lass mich den richtigen Weg kennen und mir helfen, dieses Problem lösen.
Danke fürs Lesen.
Danke Sam für die Antwort. Ich werde JacksonDataBindTest versuchen. Ich habe das Beispiel der POJO-Bindung mit Schnittstelle versucht. Es gibt ein Problem mit diesem Ansatz, wie legen wir das uri des Dokuments beim Speichern des Dokuments fest? – RCS
Sam, ich habe versucht, JacksonDataBind Beispiel und in der Lage, die Pojo Marklogic-Datenbank einfügen. Brauchen Sie einen Vorschlag im Falle der Aktualisierung (fügen Sie eine Eigenschaft) ein vorhandenes Dokument.Es gibt zwei Möglichkeiten, die ich mir vorstellen kann, entweder ich werde das Pojo aktualisieren und schreibe es wieder in db oder ich werde teilweise Update wie JSON Patch Beispiel . Welcher Ansatz wird besser und leistungsfähiger sein, wenn man bedenkt, dass ich mit einer großen Anzahl von Daten arbeiten muss. – RCS
Sie legen das URI nicht mit PojoRepository fest, es wird basierend auf dem Klassennamen und der eindeutigen ID (markiert mit der @Id-Anmerkung) für Sie festgelegt. –