mybatisplus+pgsql奇怪的查询bug

       最近公司把底层数据库,改换成了pgsql,之前一直是用的mysql。可是换了pgsql之后,现在发现跟mybatisplus集成上,居然出现了一些很奇怪的bug。

这是sys_user表,我要根据id查这两条数据,一个id为3,一个id为5

 这是4条查询语句,前2条根据id为3的查,后两条根据id为5的查

 以下是根据id为3来查,

 数据正常查了处理,departmentId也不为空,为啥这里我要提到 departmentId这段,请接着看,

奇怪的事情发生了,当id为5的查询时,数据也查出来了,确实是数据库里的那两条数据,但是

departmentId居然为null,这就很离谱

 这是实体:

package com.xmirror.entity.entity.system;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.xmirror.entity.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.beans.Transient;
import java.util.*;

/**
 * 用户实体
 *
 * @author Wang, Haoyue
 * @since 2020/9/11 2:04 下午
 */
@Data
@TableName("sys_user")
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User extends BaseEntity implements UserDetails {

    /**
     * 用户名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 是否启用
     * 0: 不启用
     * 1: 启用
     */
    private Integer status;

    /**
     * 部门id
     */
    private Integer departmentId;

    /**
     * 授权开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date authStartTime;

    /**
     * 授权结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date authEndTime;

    /**
     * 登录失败次数
     */
    private Integer loginFailCount;

    /**
     * 角色id
     */
    @TableField(exist = false)
    private Integer roleId;

    /**
     * 角色名称
     */
    @TableField(exist = false)
    private String roleName;

    /**
     * 注册说明
     */
    private String remark;

    /**
     * 权限集合
     * 非数据库字段属性
     */
    @TableField(exist = false)
    private List<Permission> authorities;

    public User() {
    }

    public User(Integer id){
        super.setId(id);
    }
    public User(List<Permission> authorities, User user) {
        this.authorities = authorities;
        super.setId(user.getId());
        super.setModifyDate(user.getModifyDate());
        super.setCreateDate(user.getCreateDate());
        username = user.getUsername();
        password = user.getPassword();
        realName = user.getRealName();
        phone = user.getPhone();
        email = user.getEmail();
        status = user.getStatus();
        departmentId = user.getDepartmentId();
        authStartTime = user.getAuthStartTime();
        authEndTime = user.getAuthEndTime();
    }

    @Transient
    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<SimpleGrantedAuthority> auth = new ArrayList<>();
        // 根据Permission生成权限列表
        Optional.ofNullable(authorities)
                .ifPresent(p -> p.forEach(permission -> {
                    auth.add(new SimpleGrantedAuthority(permission.getExpression()));
                }));
        return auth;
    }

    @Transient
    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Transient
    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Transient
    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Transient
    @Override
    public boolean isEnabled() {
        return true;
    }
}

 这是表结构

我把sql打印出来,拿来数据库里执行,都是能正常查出来的,说明单独跟pgsql没有关系,估计就是pgsql跟mybatisplus集成上的问题。而且也只有这一个字段出不来,并且也不是每条数据的这个字段出不来。 

真是百思不得其解,都后悔用这pgsql这玩意儿了,不知道有朋友遇到过这种奇怪问题没有

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值