在Java中非常奇怪的PreparedStatement?

Jus*_*tin 6 java sql jdbc prepared-statement

我今天在一个程序中发现了一个非常奇怪的PreparedStatement,这是我收到的错误.我追踪它,发现了一些令人困惑的SQL.现在,我不是SQL或PreparedStatements的主人,但这似乎非常错误.我还应该提一下,这适用于同事的计算机而不是我的计算机.

static final String SELECT_UNCOMPLETE_TASKS_FOR_UPGRADE =
"SELECT i.employeeid, i.taskid, i.itptaskarchivecd, i.itptaskstartdt, i.itptaskcompletiondt,t.taskobsoletecd, "
+ "t.taskknowledgetx, t.taskProductid, t.taskrfrncid, t.taskcorecd, t.taskwartimecd, t.parentheaderid, "
    + "t.taskparentindcd, i.itptaskstatuscd, i.itptaskarchivedt, t.certified "
    + "FROM itptask i,task t "
    + "WHERE (i.itptaskcompletiondt is NULL "
        + "AND i.employeeid = ?1 "
        + "AND i.taskid = t.taskid "
        + "AND i.itptaskarchivecd = ?2 "
        + "AND t.taskproductcd = ?3 "
        + "AND t.taskobsoletecd = ?4 "
        + "AND t.taskcorecd = ?5) "
    + "OR (i.employeeid = ?6 "
        + "AND i.taskid = t.taskid "
        + "AND 'T' = t.taskparentindcd "
        + "AND t.taskproductcd = ?7)";
Run Code Online (Sandbox Code Playgroud)

我的问题很简单,参数占位符(问号)之后的数字是多少?如果这是完全不正确的语法,那么什么会允许它在另一个工作区/环境中工作?任何和所有的帮助将不胜感激.谢谢.

Nic*_*ick 5

该特定语法看起来特定于JPA语法.在JPA中,您可以指定?#通过Query对象指定参数索引.

Query myQuery = entityManager.createNativeQuery("select * from my_table where foo = ?1 and bar = ?2");

q.setParameter(1,myFoo);
q.setParameter(2,myBar);
Run Code Online (Sandbox Code Playgroud)