如何检查该列表<长>包含值?

2022-09-03 06:55:47

我有列表,其中包含:[160774,7212775]和。我需要检查列表是否包含值为.如何做到这一点?不幸的是,在我的情况下返回。List<Long> listLong id = 7212775idlist.contains(id)false

我以这种方式使用它:

@RequestMapping("/case/{id}")
public String openCase(@PathVariable("id") Long id) {

    log.debug(caseDAO.findAllCasesId());    // [160774, 7212775]
    log.debug(id); // 7212775

    if(caseDAO.findAllCasesId().contains(id)) {
        return "case";
    } else {
        return "404";
    }
}

DAO的一部分(休眠,但这里是原生sql):

public List<Long> findAllCasesId() {
    String sql = "select id from cases";
    SQLQuery query = getSession().createSQLQuery(sql);
    return query.list();
}

解决

问题在于 ,返回 的列表 ,而不是 的列表。我通过以下方式纠正了这一点:caseDAO.findAllCasesId()ObjectLong

SQLQuery query = getSession().createSQLQuery(sql).addScalar("id", Hibernate.LONG);

非常感谢:南濑奈之


答案 1

自动装箱时,您需要确保用L后缀文本,即 让它工作。Long id = 7212775L


答案 2

在日食日历上运行下面的代码:

public static void main(String[] args) {
    List<Long> list = new ArrayList<Long>();
    list.add(160774L);
    list.add(7212775L);
    System.out.println(list.contains(7212775L);
}

输出:

true

你做错了什么

System.out.println(list.contains(7212775));

问题是您的列表采用 Long 对象,并且您正在搜索文本。