java.sql.SQLException:ORA-01747:无效的user.table.column、table.column或column规范
我发现了错误java.sql.SQLException:ORA-01747:无效的user.table.column、table.column或column规范,java,hibernate,oracle11g,Java,Hibernate,Oracle11g,我发现了错误 java.sql.SQLException: ORA-01747: invalid user.table.column, table.column, or column specification 返回此错误的代码如下: public boolean checkAttendance(String userid,String currentdate){ boolean status=false; List attendanceList=new Arr
java.sql.SQLException: ORA-01747: invalid user.table.column, table.column, or column specification
返回此错误的代码如下:
public boolean checkAttendance(String userid,String currentdate){
boolean status=false;
List attendanceList=new ArrayList();
Session session = getSessionFactory().openSession();
try {
Transaction tx = session.beginTransaction();
String hql = "select userid from Attendance where userid='"+ userid +"' and date='"+currentdate+"'";
Query query = session.createQuery(hql);
attendanceList = (ArrayList) query.list(); //This Line returning the error
if(attendanceList.size()>0)
{
status=true;
}
tx.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
return status;
}
我已尝试在Context.xml文件中启用查看sql
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true;
</value>
</property>
hibernate.dialogue=org.hibernate.dialogue.Oracle10gDialogue
hibernate.show_sql=true;
我看不到sql正在执行,也不知道为什么会出现此错误,因为我的表和字段是正确的。请帮忙。我正在使用Oracle 11g
从考勤中选择userid…
为SQL且无效的HQL
你应该把它改成
从a中选择a.userid,其中a.userid=:userid和a.date=:currentdate
OT-始终使用查询参数而不是字符串连接是一个好主意。使用参数更安全、更高效。请参阅以获得一个好的解释
编辑:提前检查查询字符串的有效性。如果无效,则不会创建SQL。如果没有创建SQL,则没有要执行的内容。因此,
show\u sql
标志对无效查询无效。好的,谢谢,我会试试这个。你知道为什么我看不到我的hls被执行了吗?@Stanley我可能说得不够清楚,或者我误解了你-查询字符串无效-这就是为什么它没有被执行没关系,先生,但是我应该能够看到应用程序试图执行的查询,以便得到错误,因为我已经设置了我的`hibernate.show\u sql=true;`正确的?