mybatis-plus icon indicating copy to clipboard operation
mybatis-plus copied to clipboard

PaginationInnerInterceptor 分页不支持默认参数?乐观锁为啥不用JPA的@Version

Open boonyachengdu opened this issue 2 years ago • 1 comments

当前使用版本(必填,否则不予处理)

3.5.1

该问题是如何引起的?(确定最新版也有问题再提!!!)

PaginationInnerInterceptor的默认配置启动报错 ,在后面sql解析环节。

重现步骤(如果有就写完整)

实体基类如下: public abstract class CommonEntity implements ICommonEntity, Serializable {

/**
 * 启用标识
 */
public static final boolean ENABLED = false;
public static final boolean DISABLED = true;

/**
 * id
 */
@Id
protected String id;
/**
 * 更新时间
 */
@Column(nullable = false)
protected long updateTime;
/**
 * 创建时间
 */
@Column(nullable = false)
protected long createTime;
/**
 * 版本号(乐观锁)
 */
@Version
@Column(columnDefinition = "integer DEFAULT 0", nullable = false)
protected int version = 0;

@Column
protected Boolean enabled = ENABLED;

@Override
public int getVersion() {
    return version;
}

@Override
public void setVersion(int version) {
    this.version = version;
}

/**
 * 用于表单校验
 */
@Transient
@JsonIgnore
protected int serverInternal;

public int getServerInternal() {
    return serverInternal;
}

public void setServerInternal(int serverInternal) {
    this.serverInternal = serverInternal;
}

@Override
public String getId() {
    return id;
}

@Override
public void setId(String id) {
    this.id = id;
}

@Override
public long getUpdateTime() {
    return updateTime;
}

@Override
public void setUpdateTime(long updateTime) {
    this.updateTime = updateTime;
}

@Override
public long getCreateTime() {
    return createTime;
}

@Override
public void setCreateTime(long createTime) {
    this.createTime = createTime;
}

/**
 * 默认启用状态 <p> 为空或 enabled == false 时为启用状态
 *
 * @return boolean
 */
@Override
@JsonIgnore
public boolean isEnable() {
    return enabled == null || !enabled;
}

public Boolean getEnabled() {
    return enabled;
}

public void setEnabled(Boolean enabled) {
    this.enabled = enabled;
}

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((id == null) ? 0 : id.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj) {
        return true;
    }
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    CommonEntity other = (CommonEntity) obj;
    if (id == null) {
        return other.id == null;
    } else {
        return id.equals(other.id);
    }
}

报错信息

报的是sqlParser的错误,是否不支持这样的基类 还有 支持乐观锁为啥不用JPA的@Version呢

boonyachengdu avatar Apr 20 '22 06:04 boonyachengdu

图片 CommonEntity是基类 3.1.2是可以的。

boonyachengdu avatar Apr 20 '22 06:04 boonyachengdu

sql 解析异常未给出具体 sql 无法排查(或者提 issue https://github.com/JSQLParser/JSqlParser ),关于 jpa 注解 MP 不想引入太多的第三方依赖,MP 只做自己就行了

qmdx avatar Dec 16 '22 01:12 qmdx