我有Java Lambda表达式的问题。我使用Spring 4,JdbcTemplate,Java 8. Intellij IDEA显示“循环推理”。它是什么以及如何解决它?谢谢你的关注。
@Override
public User getUser(long id) {
return jdbcTemplate.query("SELECT * FROM user WHERE id = ?",
ps -> {
ps.setLong(1, id);
},
(rs, rowNum) -> {
return new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getLong(4), rs.getBoolean(5));
});
}
解决 此函数返回List,而不是User。正确的功能是:
@Override
public User getUser(long id) {
return jdbcTemplate.query("SELECT * FROM user WHERE id = ?",
ps -> {
ps.setLong(1, id);
},
(rs, rowNum) -> {
return new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getLong(4), rs.getBoolean(5));
}).get(0);
}
答案 0 :(得分:0)
@Override
public User getUser(long id) {
return jdbcTemplate.query("SELECT * FROM user WHERE id = ?",
ps -> {
ps.setLong(1, id);
},
(rs, rowNum) -> {
return new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getLong(4), rs.getBoolean(5));
}).stream().findFirst().orElse(null);
}
或者您也可以使用.findAny而不是findFirst。