我想根据Object(State Pattern)的具体状态设置result属性。
如何使用myBatis做到最好?
这种方法给我一个错误:
<association property="state" javaType="commonInterface">
<discriminator javaType="String" column="state">
<case value="CREATED" resultType="ClassA" />
<case value="RUNNING" resultType="ClassB" />
<case value="FINSHED" resultType="ClassC" />
</discriminator>
</association>
错误是:
Could not set property 'state' of 'FatherClass' with value '1'
Cause: java.lang.IllegalArgumentException: Can not set com.example.State field
com.example.state to java.lang.Long
所以不知何故myBatis返回Long而不是具体对象。这种方法是否可行?
编辑:状态&#34;创建&#34;,&#34;运行&#34;,&#34;完成&#34;来自枚举,当它保存到数据库时。但是当它再次被读取时,我可以轻松地将其视为一个字符串 - 对吧?!
答案 0 :(得分:0)
您应该将您的POJO声明为枚举而不是类,无论如何,Mybatis中有默认的枚举处理,但您可以继续提供自己的自定义处理程序:
在http://www.mybatis.org/mybatis-3/configuration.html#typeHandlers
了解详情