«

mybatisplus+pgsql查询bug怎么解决

时间:2024-7-31 08:55     作者:韩俊     分类: Mysql


这篇“mybatisplus+pgsql查询bug怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mybatisplus+pgsql查询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集成上的问题。而且也只有这一个字段出不来,并且也不是每条数据的这个字段出不来。

标签: mysql

热门推荐