Java 我可以在关联映射器中使用鉴别器吗?

Java 我可以在关联映射器中使用鉴别器吗?,java,mybatis,Java,Mybatis,我想根据对象的具体状态(状态模式)设置结果属性 我怎样才能用myBatis做到最好 这种方法给了我一个错误: <association property="state" javaType="commonInterface"> <discriminator javaType="String" column="state"> <case value="CREATED" resultType="ClassA" /> <c

我想根据对象的具体状态(状态模式)设置结果属性

我怎样才能用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>
因此,不知何故,myBatis返回的是一个Long而不是一个具体的对象。这种方法可能吗


编辑:保存到数据库时,状态“已创建”、“正在运行”、“已完成”来自枚举。但是当它被再次读取时,我可以很容易地将其视为一个字符串-对吗

您可能应该将POJO声明为enum而不是类,无论如何,Mybatis中有一个默认的enum处理,但您可以继续并提供自己的自定义处理程序:

更多信息,请访问:

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