有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java criteriaBuilder notEqual函数不会为多个同一类返回空值

我有两门课,如下所示

public class User {

    @Column(name = "EMP_NAME")
    private String name;

    @Column(name = "EMP_PASSWORD")
    private String password;
    
    @ManyToOne
    @JoinColumn(name = "ROLE_ID")
    private Role role;
    ....
}

public class Role {

    @column("ROLE_NAME")
    private String name;

    @column("IS_MASTER")
    String isMaster; // 'Y' or 'N'
    ...
}

我需要得到所有的用户不是主人或没有角色。为了做到这一点,我尝试了类似的东西,但没有工作

Predicate nonMaster =  cb.notEqual(root.get("role").get("isMaster"), "Y");
cb.and(nonMaster)

但这不会返回没有角色值(role_ID==NULL)的用户。我也试过,但也不管用

Predicate nonMaster =  cb.notEqual(root.get("role").get("isMaster"), "Y");
Predicate nullRole =  cb.isNull(root.get("role"));
cb.or(nullRole,nonMaster);

如何进行类似role为null或role的查询。isMaster等于“N”


共 (1) 个答案

  1. # 1 楼答案

    为了解决这个问题,我让我的查询左连接。有了这个,我就可以得到空值

    Root<User> root = q.from(User.class);
    root.join(User_.role,JoinType.LEFT);