我收到错误
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文件中启用view sql
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
hibernate.show_sql=true;
</value>
</property>
我看不到sql被执行了,我不知道为什么会出现这个错误,因为我的表和字段是正确的。请帮忙。我使用的是Oracle 11g
答案 0 :(得分:2)
select userid from Attendance where userid...
是SQL,不是有效的HQL。
您应该将其更改为
select a.userid from Attendance a where a.userid = :userid and a.date=:currentdate
OT - 始终使用查询参数而不是字符串连接是个好主意。使用参数更安全,更有效。有关详细说明,请参阅this article。
编辑:提前检查查询字符串的有效性。如果它无效,则不会进行SQL创建。如果没有创建SQL,则无需执行任何操作。因此,show_sql
标志对无效查询无效。