0
我从下面得到上述错误(println()
调用表明resultObj
的确是PGobject
):org.postgresql.util.PGobject不能转换为org.postgresql.util.PGobject
public List<Search> findSearchesBySearchString(String searchString) throws ClassNotFoundException{
List<Search> searchResults = new ArrayList<>();
String queryString = "SELECT s FROM Search s WHERE '"+ searchString +"' = ANY(s.searchstrings)";
Query query = em.createNativeQuery(queryString);
List<Object> objectResultsList = query.getResultList();
for(Object resultObj: objectResultsList){
System.out.println("***********************************************************"+ resultObj.getClass());
PGobject resultObject = (PGobject)resultObj; // ClassCastException thrown here
Search search = new Search();
感谢
部署目录(在Wildfly上)有一个Postgres JDBC驱动程序的副本。我也有我的Maven依赖项中列出的相同版本的库。出于这个原因,我不认为这是因为你建议的不匹配。你之前是否在你的代码中使用了这种类型的转换。我发现它是利用PostgresSQL数组的必要条件。我明白它们是一个相对较新的特性 - 关于PGobject没有太多的文献。 我也注意到它的文档说它用来保存未知类型的对象。这是我演员失败的原因吗? –
我不是建议版本不匹配。我建议你有两份JAR文件。这将解释错误,即使两个JAR具有完全相同的版本。你需要消除其中的一个。 – Thilo