Java抛出;PersistenceException:SQLGrammarException:无法提取结果集;
我正在调用一个函数,该函数试图检查MYSQL中我的表中是否存在特定记录 职能: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
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。