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;`正确的?