首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编组在MarkLogic中不使用MarkLogic

编组在MarkLogic中不使用MarkLogic
EN

Stack Overflow用户
提问于 2020-07-14 08:12:01
回答 1查看 66关注 0票数 1

我想将下面的对象存储到MarkLogic中。

代码语言:javascript
复制
@XmlRootElement(name = "trainModel")
@XmlAccessorType(XmlAccessType.FIELD)
public class TrainedModel implements Serializable {

    private static final long serialVersionUID = 1L;

    private String modelName;
    private CrossValidatorModel crossValidatorModel;

    public String getModelName() {
        return modelName;
    }

    public void setModelName(String modelName) {
        this.modelName = modelName;
    }

    public CrossValidatorModel getCrossValidatorModel() {
        return crossValidatorModel;
    }

    public void setCrossValidatorModel(CrossValidatorModel crossValidatorModel) {
        this.crossValidatorModel = crossValidatorModel;
    }

    @Override
    public String toString() {
        return "TrainedModel [modelName=" + modelName + ", crossValidatorModel=" + crossValidatorModel + "]";
    }
}

我使用JAXBHandle来完成我的需求,但是在将TrainedModel对象存储到MarkLogic中时,CrossValidatorModel变得空了。

CrossValidatorModel是org.apache.spark.ml.tuning.CrossValidatorModel提供的外部对象。

我试过了下面的代码

代码语言:javascript
复制
    CrossValidatorModel crossValidatorModel = createDataFrame(null);
    TrainedModel trainedModel = new TrainedModel();
    trainedModel.setModelName("sample");
    trainedModel.setCrossValidatorModel(crossValidatorModel);
    
    JAXBContext context = JAXBContext.newInstance(TrainedModel.class);  
    JAXBHandle<TrainedModel> jaxbHandle = new JAXBHandle<TrainedModel>(context);
    jaxbHandle.set(trainedModel);
    
    GenericDocumentManager docMgr = client.newDocumentManager();
    docMgr.writeAs("/shivling.xml", null, jaxbHandle);

这是我得到的xml结果,

代码语言:javascript
复制
<?xml  version="1.0" encoding="UTF-8"?>
<trainModel>
    <modelName>sample</modelName>
    <crossValidatorModel>
    </crossValidatorModel>
</trainModel>

crossValidatorModel在这里是空的,请帮我解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 23:17:22

NULL (在代码中)与XML中的 result :您的结果表明代码中存在语义问题。

JAXB框架可以通过适当的MarkLogic文档管理器或旧的POJO方式来传递:一个简单的MarkLogic JAXB注释(您可以在批量读写事务中使用DMSDK ):

代码片段:

代码语言:javascript
复制
        XMLDocumentManager docMgr = marklogic.newXMLDocumentManager();

        TrainedModel trainedModel = new TrainedModel();
            
        trainedModel.setModelName("History and Psychology");
        trainedModel.setCrossValidatorModel("Biology");

        String docId = "/train-model.xml";

        docMgr.writeAs(docId, trainedModel);

结果:

次等IO方法:

代码语言:javascript
复制
    TrainedModel trainedModel = new TrainedModel();
            
        trainedModel.setModelName("History and Current Affairs");
        trainedModel.setCrossValidatorModel("Psychology");
        
        // initialize JAXB 
        JAXBContext context = JAXBContext.newInstance(TrainedModel.class);
        
        // POJO Handle
        JAXBHandle<TrainedModel> writeHandle = new JAXBHandle<TrainedModel>(context);
        
        // Marshalling
        Marshaller jaxMar = context.createMarshaller();
            
        String docId = "/train-model.xml";

        // IsMarshalled
        jaxMar.marshal(trainedModel, System.out);

        // set Handle
        writeHandle.set(trainedModel);

       // write POJO to MarkLogic
        docMgr.write(docId, writeHandle);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62890756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档