私のドメインクラスには属性が列挙型にマップされています。 Strangely MyBatis 3.4.x(3.4.0と3.4.4の両方)はSpring MyBatis 1.3.1と無関係の列挙型にマップしようと試み、エラーを出します。MyBatisが属性を間違ったEnumにマップします
org.mybatis.spring.MyBatisSystemException:ネストされた例外はorg.apache.ibatis.executor.result.ResultMapExceptionです:エラーは、結果セットから列を 'order_line_programmed' を取得しようとします。原因:java.lang.IllegalArgumentExceptionが:いいえ列挙型定数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;
}
それはですこのプログラムされた状態は、以下のようにプログラムされた列にマッピングされる。
<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はそれを無視しているようです。便利かもしれません
少数情報ProgrammedStatus
UnrelatedEnum
- UnrelatedEnumも、単純な列挙型でありますコードの他の場所でも発行されます。私は、ここではEnumTypeHandlerではなく、自分の特定のtypeHandlerを持つことができます。問題は、このenumマッチングがプログラムの多くの場所で使用されており、マイグレートすると3.4がプログラムを不安定にしてしまうことです。
これは質問に対する答えを提供しません。十分な[評判](https://stackoverflow.com/help/whats-reputation)があれば、[投稿にコメントする]ことができます(https://stackoverflow.com/help/privileges/comment)。代わりに、[質問者からの明確化を必要としない回答を提供する](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-代わりに)。 - [レビューから](レビュー/低品質の投稿/ 18263348) – JimHawkins
申し訳ありませんが、Gunithが私のフィールドで自分自身に答えた場合は、CHAR型があり、ソリューションが提供されます:VARCHARに変更してください。 –