gpt4 book ai didi

java - MyBatis 将属性映射到错误的 Enum

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:46 24 4
gpt4 key购买 nike

我的域类具有映射到枚举的属性。奇怪的是,MyBatis 3.4.x(3.4.0 和 3.4.4。这适用于 3.3.x)和 Spring MyBatis 1.3.1 试图用一个不相关的枚举映射它并给出错误。

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'order_line_programmed' from result set. Cause: java.lang.IllegalArgumentException: No enum constant foo.UnrelatedEnum.yes

我的域类如下所示:

public class OrderLine {

private Long id;
private Product product;
private ProgrammedStatus programmedStatus;
private String programmedFeedback;
private boolean completed = false;
}

ProgrammedStatus 是一个简单的枚举

public enum ProgrammedStatus {
yes, no, error;
}

正是这个 programmedStatus 映射到 programmed 列,如下所示,

<resultMap id="orderLineResult" type="foo.OrderLine">
<id property="id" column="technical_order_line_id" />
<result property="programmedStatus" column="order_line_programmed" typeHandler="org.apache.ibatis.type.EnumTypeHandler" />
<result property="programmedFeedback" column="order_line_programmed_feedback" />
<result property="completed" column="order_line_completed"
javaType="java.lang.Boolean" typeHandler="org.apache.ibatis.type.BooleanTypeHandler" />
<association property="product"
notNullColumn="order_line_product_id"
resultMap="foo.repository.mapper.ProductMapper.productResult" />
</resultMap>

我什至尝试过将 javaType 映射到 typeHandler,但 MyBatis 似乎忽略了它。

一些可能有用的信息,

  • UnrelatedEnum 也是一个简单的枚举作为 ProgrammedStatus
  • 产品有一个属性,该属性有一个类型为 UnrelatedEnum 的属性

我在代码的其他地方也发现了这个问题。我可以在这里使用我自己的特定 typeHandler 而不是 EnumTypeHandler。问题是这个枚举匹配在我的程序中的很多地方使用,并且迁移机智 3.4 使我的程序不稳定。

最佳答案

删除明确提到的枚举 typeHandler 对我有用

Remove : typeHandler="org.apache.ibatis.type.EnumTypeHandler"

<resultMap id="orderLineResult" type="foo.OrderLine">
<id property="id" column="technical_order_line_id" />
<result property="programmedStatus" column="order_line_programmed" />
<result property="programmedFeedback" column="order_line_programmed_feedback" />
<result property="completed" column="order_line_completed"
javaType="java.lang.Boolean" typeHandler="org.apache.ibatis.type.BooleanTypeHandler" />
<association property="product"
notNullColumn="order_line_product_id"
resultMap="foo.repository.mapper.ProductMapper.productResult" />
</resultMap>

关于java - MyBatis 将属性映射到错误的 Enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44450930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com