У меня есть файл JSP, который я развертываю в Java-проекте с помощью Eclipse, Maven и Tomcat. У меня есть несколько других файлов JSP, почти идентичных этому, хотя они выполняют разные операции. Во всяком случае, когда я иду на страницу, я дал это:
org.apache.jasper.JasperException: An exception occurred processing JSP page /entertime2.jsp at line 106
103: rsBug = psBug.executeQuery();
104:
105: while(rsBug.next()) {
106: Bug b = new Bug(rsBug);
107: out.println("<option value='" + b.get(Bug.BUG_ID) + "'>" + b.get(Bug.TITLE) + "</option>");
108: }
109: rsBug.close();
root cause
javax.servlet.ServletException: java.sql.SQLException: Invalid column name ixPersonOpenedBy.
Ошибка - это пользовательский класс, который может принимать набор результатов - rsBug
- и выполняет следующие операции:
setValue(Bug.BUG_ID,rs.getString(Bug.BUG_ID));
setValue(Bug.PERSON_OPENED_BY,rs.getString(Bug.PERSON_OPENED_BY));
setValue(Bug.PERSON_ASSIGNED_TO,rs.getString(Bug.PERSON_ASSIGNED_TO));
setValue(Bug.TITLE, rs.getString(Bug.TITLE));
setValue(Bug.PROJECT_ID,rs.getString(Bug.PROJECT_ID));
Где BUG_ID, PERSON_OPENED_BY, PERSON_ASSIGNED_TO, TITLE и PROJECT_ID - все строковые члены класса Bug, которые соответствуют именам столбцов в таблице Bug, хранящейся в базе данных. Теперь в таблице есть столбец ixPersonOpenedBy
, но он никогда не доставлял мне никаких проблем. Я не уверен, имеет ли это какое-либо отношение к оператору SQL, который я пытаюсь выполнить, или нет, но я уже использовал тот же оператор EXACT ранее в одном из моих других JSP, и это не доставило мне никаких проблем. Кроме того, эта ошибка не появлялась в более ранних версиях проекта. У меня была опечатка в несвязанной переменной, и как только она была исправлена, этот парень появился из ниоткуда.
В любом случае, кто-нибудь может понять, почему эта ошибка возникает, когда я знаю, что столбец «должен» быть действительным? Если вам нужно увидеть больше JSP, класса ошибок или таблицы ошибок в базе данных, просто дайте мне знать; любая помощь приветствуется.
РЕДАКТИРОВАТЬ: Вот два оператора SQL, которые я использую, но я не уверен, что любой из них вызывает проблему.
SELECT p.ixPerson, p.sFullName
FROM Person p, jwTeamMembers t
WHERE p.ixPerson = t.ixPerson
ORDER BY p.sFullName ASC
SELECT b.ixBug, b.sTitle
FROM Bug b, Person per, Project p, Area a, jwTime t, jwTeamMembers m, jwTeam jt, Status s, jwDivision d
WHERE per.ixPerson = t.ixPerson AND t.ixBug = b.ixBug AND b.ixProject = p.ixProject AND b.ixArea = a.ixArea
AND per.ixPerson = m.ixPerson AND m.ixTeam = jt.ixTeam AND b.ixStatus = s.ixStatus AND a.ixDivision *= d.ixDivision
AND (per.ixPerson = ?)
GROUP BY b.ixBug, b.sTitle
ORDER BY b.ixBug DESC
Параметр во втором выражении заполнен:
psBug.setInt(1, Integer.valueOf(personId).intValue());