10bet网址
连接器和api手册
本手册下载

3.9.2模式验证

对于Connector/J 8.0.21及以后版本,当使用MySQL Server 8.0.19及以后版本时:模式验证可以配置为集合,以便文档在集合在插入或更新它们之前,根据模式进行验证。这是通过指定JSON模式集合创建或修改;然后,服务器在文档创建或更新时执行模式验证,如果文档没有针对所分配的模式进行验证,则返回一个错误。有关MySQL中JSON模式验证的更多信息,请参见JSON模式验证函数。控件的模式验证配置方法集合与连接器/ J。

在创建模式时配置模式验证集合,传递给createCollection ()方法CreateCollectionOptions对象,它有以下字段:

  • 重用的布尔值setReuseExisting方法。如果它是真正的,当集合被创建的已经存在模式也就是说,要包含它,Connector/J返回成功(没有任何尝试将JSON模式应用到现有的集合);在同样的情况下,如果参数设置为,Connector/J返回一个错误。如果重用不是定了,便是取了

  • 验证:一个验证对象设置的setValidation ()方法。一个验证对象依次包含以下字段:

    • 水平:类的枚举ValidationLevel,由setLevel ()方法;它可以是以下两个值之一:

      • 严格的:严格验证。试图插入或修改违反验证模式的文档会引发服务器错误。

      • :没有验证。模式验证是关闭的。

      如果水平不是定了,就是取了MySQL Server 8.0.19和严格的8.0.20及以后版本。

    • 模式:表示AJSON模式用于验证文档集合;设定的setSchema ()方法。

      如果模式不提供,但水平设置为STRICT时,集合是否根据默认模式进行验证{“类型”:“对象”}

这是如何在创建集合:

收集coll = this.schema。createCollection (collName,新的CreateCollectionOptions () .setReuseExisting (false) .setValidation(新验证().setLevel ValidationLevel.STRICT .setSchema(“{\ \“id”:\“http://json-schema.org/geo \"," + "\"$ 模式\”,\“http://json-schema.org/draft-06/schema #\"," + " \" 描述\”,\“地理坐标 \"," + " \" 类型\”:\”对象 \"," + " \" 属性 \": {" + " \" 纬度 \": {" + " \" 类型\”:\“号码 \"" + " }," + " \" 经度 \": {" + " \" 类型\”:\“号码 \"" + " }" + " }," + " \" 要求\”:[\“纬度\”,\“经度 \"]" + " }" )));

set字段可以通过相应的getter方法访问。

对象的模式验证配置集合,可以使用modifyCollection ()方法并传递给它ModifyCollectionOptions对象的字段与CreateCollectionOptions对象之外的重用字段,该字段不存在ModifyCollectionOptions对象。为验证对象的一个ModifyCollectionOptions对象,用户可以设置其水平模式,或两者兼而有之。下面是使用modifyCollection ()要更改模式验证配置:

模式。modifyCollection (collName新ModifyCollectionOptions新验证()().setValidation (.setLevel ValidationLevel.OFF .setSchema(“{\ \“id”:\“http://json-schema.org/geo \"," + "\"$ 模式\”,\“http://json-schema.org/draft-06/schema #\"," + " \" 描述\”,\“新地理坐标 \"," + " \" 类型\ ":\ "对象 \"," + " \" 属性\”:{" + " \ "纬度 \": {" + " \" 类型\”:\“号码 \"" + " }," + " \" 经度 \": {" + " \" 类型\”:\“号码 \"" + " }" + " }," + " \" 要求\”:[\“纬度\”,\“经度 \"]" + " }" )));

如果Collection包含没有根据通过提供的新JSON模式进行验证的文档ModifyCollectionOptions,服务器就会拒绝这个错误的模式修改错误5180 (HY000)文档根据分配给集合的模式无效

请注意

createCollection ()modifyCollection ()是重载的:它们可以被调用而不传递CreateCollectionOptions或者是ModifyCollectionOptions在这种情况下,模式验证将不会应用于集合