Java抛出;PersistenceException:SQLGrammarException:无法提取结果集;

Java抛出;PersistenceException:SQLGrammarException:无法提取结果集;,java,mysql,sql,hibernate,jpql,Java,Mysql,Sql,Hibernate,Jpql,我正在调用一个函数,该函数试图检查MYSQL中我的表中是否存在特定记录 职能: public String get_value(long nodeid,String ts) { try { String sql="Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts; em.createNativeQuery(sql).getSingleResult

我正在调用一个函数,该函数试图检查MYSQL中我的表中是否存在特定记录

职能:

 public String get_value(long nodeid,String ts) {
        try {
            String sql="Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts;

            em.createNativeQuery(sql).getSingleResult();
            if (em == null) {
                throw new Exception("could not found URL object.");
            }
          //  return 1;

        } catch (Exception e) {
            e.printStackTrace();



        }
       return null;
    }
String v=fileFacade1.get_value(fileID,date);

  if(v !=null ){ 

// if the URL column contains the result, do something.


}
当它转到
getSingleResult()
时,会抛出一个:

PersistenceException:SQLGrammarException: Could not extract resultset
我检查了我的SQL查询,它看起来很好,所以我不确定出了什么问题

编辑 调用方函数:

 public String get_value(long nodeid,String ts) {
        try {
            String sql="Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts;

            em.createNativeQuery(sql).getSingleResult();
            if (em == null) {
                throw new Exception("could not found URL object.");
            }
          //  return 1;

        } catch (Exception e) {
            e.printStackTrace();



        }
       return null;
    }
String v=fileFacade1.get_value(fileID,date);

  if(v !=null ){ 

// if the URL column contains the result, do something.


}

我认为,您缺少一个参数:

"Select URL FROM urllink WHERE URL="+"'f0='"+nodeid+"'&ts='"+ts
                                    ^ here
因为在parsint之后,查询是:

Select URL FROM urllink WHERE URL='f0='nodeid'&ts='ts
另一件事是,
&
在sql中不是有效的逻辑运算符,您应该使用

编辑:如果您希望它是
where
子句中的一个字符串,那么您的意思可能是:

"Select URL FROM urllink WHERE URL='f0="+nodeid+"&ts="+ts + "'"

我认为这是一个误解,
&
不是一个逻辑运算符,因为在我的URL列中它的格式是:
f0=27451&ts=2019.03.20.18.00.21
,所以我需要检查两个参数的值是否存在,然后可能有太多的
,也许你的意思是
WHERE URL='f0=nodeid&ts=ts'
?我只想传递参数
nodeid
ts
,就这样,出了什么问题?我知道这有点混乱,因为有太多的
=
符号,我认为它可以工作,但在我的调用者函数中,它不工作,就像
String v=fileFacade1.get_值(fileID,date)。你能检查一下我编辑的帖子,看看我的意思吗?因为我可以从函数中得到单个结果,调用函数
v
仍然返回null。