我必须单独运行两个查询并添加单个列表,如下面的代码,
List<BojaClass> results1 = new ArrayList<>();
List<BojaClass> results2 = new ArrayList<>();
String sql1 = "my query 1";
String sql2 = "my query 2";
results1 = jdbcTemplate.query(sql1, new Object[]{1,2}, new BeanPropertyRowMapper<BojaClass>(BojaClass.class));
results2 = jdbcTemplate.query(sql2, new Object[]{1,2}, new BeanPropertyRowMapper<BojaClass>(BojaClass.class));
results1.add((BojaClass) results2);
但是我得到异常“ java.lang.ClassCastException:java.util.ArrayList无法强制转换为com.myclass.BojaClass ”并且results2值不会添加到results1。
我在哪里做错了?
答案 0 :(得分:2)
您正在使用add
接口的List
方法,该方法仅向列表中添加单个元素。请改用addAll
方法,这将添加另一个列表。
布尔值java.util.List.add(E e)
将指定的元素追加到此列表的末尾(可选 操作)。
boolean java.util.List.addAll(Collection c)
将指定集合中的所有元素追加到此列表的末尾,在 命令它们由指定的集合的迭代器返回 (可选操作)。如果,则此操作的行为未定义 操作进入时修改指定的集合 进展。 (请注意,如果指定的集合是,则会发生这种情况 这个清单,这是非空的。)
答案 1 :(得分:0)
您的演员阵容中存在错误:
results1.add((BojaClass) results2);
上面应改为:
results1.add((List<BojaClass>) results2);
希望这可以解决您的问题