我的DAO中有以下代码,它返回一个[Ljava.lang.String;不能转换为java.lang.String异常我想知道为什么会这样的原因和解决方案。
public Collection<Testdoc> findTestId(int idTest, String... testtype) {
StringBuffer buf = new StringBuffer("SELECT w FROM Testdoc w WHERE w.Test.idTest = :idTest");
buf.append("AND w.testtype IN ( :testtype ) ");
return findByQuery(buf.toString(), "idTest", idTest, "testtype ", testtype );
}
findByQuery
的最后一个参数似乎是String
类型。您使用了String[]
.
String...
作为最后一个参数类型表示String[]
但允许调用方使用fn("x", "y", "z")
而不是fn(new String[] { "x", "y", "z" })
。
@user85421指出,findByQuery
很可能被声明为:
Collection<Testdoc> findByQuery(String sql, String... args);
在这种情况下,您可能需要连接参数,尽管这可能仍然不正确。
然后,您需要连接数组。在没有Arrays.concat
的情况下,请参阅问题如何在 Java 中连接两个数组?。