Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring MyBatis TypeHandler中正确的ObjectFactory_Spring_Mybatis_Spring Ws - Fatal编程技术网

Spring MyBatis TypeHandler中正确的ObjectFactory

Spring MyBatis TypeHandler中正确的ObjectFactory,spring,mybatis,spring-ws,Spring,Mybatis,Spring Ws,我正在用MyBatis在SpringWS中创建一个项目。 我在xsd中有许多web服务定义。 Spring正在基于xsd创建POJO类 问题是,在xsd中,我有一些字段具有参数nillable=“true” 像这样: 生成的POJO中的字段如下所示: protected JAXBElement numericParam 我想在MyBatis配置中创建自定义TypeHandler,以处理JAXBElement类型,但我如何知道要使用哪个ObjectFactory 可以知道哪个映射程序正在调用我的

我正在用MyBatis在SpringWS中创建一个项目。 我在xsd中有许多web服务定义。 Spring正在基于xsd创建POJO类

问题是,在xsd中,我有一些字段具有参数
nillable=“true”

像这样:

生成的POJO中的字段如下所示:
protected JAXBElement numericParam

我想在MyBatis配置中创建自定义
TypeHandler
,以处理
JAXBElement
类型,但我如何知道要使用哪个
ObjectFactory


可以知道哪个映射程序正在调用我的自定义TypeHandler吗?在TypeHandler中,我只有列名。

这在mybatis中目前(版本3.4.6)是不可能的。没有向处理程序传递有关上下文的信息(如封闭类型或映射器方法)


如果您确实想使用jaxb生成的类型,则需要为每个字段创建一个处理程序(当然,有实现所有逻辑的公共基础是有意义的)。

为什么知道处理程序在哪个映射程序中使用很重要?数据库列和对象字段之间的转换是否仅取决于列和字段的类型?是的,它假定仅取决于列和字段的类型。不幸的是,要创建object
JAXBElement
,我需要确切地知道该字段的名称以及它位于哪个模型中。必须这样创建它:
newObjectFactory().createNumericParam(value)
。我有许多模型定义,逻辑上划分为多个xsd,每个xsd都有自己的
ObjectFactory
,它只负责创建自己的字段。由于不知道
TypeHandler
中的当前映射器(或至少端点),我无法选择正确的
ObjectFactory
解决方案对您有效吗?我已经尝试过这个方法,但在我的情况下不起作用。我在生成POJO时遇到一些奇怪的错误:
namecoverter是一个接口,JAXB无法处理接口。我想这是因为我使用的是
org.glassfish.jaxb:jaxbxjc