Java中mybatis枚举类查询Error attempting to get column ‘xxxx‘ from result set. Cause: java.sql.SQLFeatureN

问题描述

Java在使用mybatis-plus时,使用枚举类查询时遇到了问题。

完整报错信息

Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Error attempting to get column 'alarm_level' from result set.  Cause: java.sql.SQLFeatureNotSupportedException

解决办法

枚举类示例

package com.changkong.monitor.domain.alarm;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;

import java.util.Objects;
import java.util.stream.Stream;

/**
 * 告警级别
 */

@Getter
@ToString
@AllArgsConstructor
public enum AlarmLevel {
    WARN(1, "警告"),
    HIGH(2, "严重"),
    DISASTER(3, "灾难");

    private Integer code;

    private String description;

    public static AlarmLevel of(Integer code) {
        Objects.requireNonNull(code);
        return Stream.of(values())
                .filter(bean -> bean.getCode().equals(code))
                .findAny()
                .orElseThrow(
                        () -> new IllegalArgumentException(code + " not exists")
                );
    }
}

实体类

package com.changkong.monitor.domain.alarm;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.io.Serializable;

/**
 * 告警规则
 */
@TableName(value ="alarm_rule")
@Data
public class AlarmRule extends BaseEntity implements Serializable {
    /**
     * id
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableId(type = IdType.AUTO, value = "id")
    private Long id;

    /**
     * 关联资源id
     */
    @TableField(value = "reference_id")
    private String referenceId;

    /**
     * 关联资源类型
     */
    @TableField(value = "reference_type")
    private String referenceType;

    /**
     * 关联资源名称
     */
    @TableField(value = "reference_name")
    private String referenceName;

    /**
     * 监控项ID
     */
    @TableField(value = "monitor_item_id")
    private Long monitorItemId;

    /**
     * prometheus表达式
     */
    @TableField(value = "promql")
    private String promQL;

    /**
     * 运算符
     */
    @TableField(value = "operator")
    private AlarmOperator operator;

    /**
     * 阈值
     */
    @TableField(value = "threshold")
    private String threshold;

    /**
     * 告警级别
     */
    @TableField(value = "alarm_level")
    private AlarmLevel alarmLevel;
}
  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值