SQLException: Неверное имя столбца ...? - PullRequest
1 голос
/ 12 сентября 2011

У меня есть файл 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());

1 Ответ

5 голосов
/ 12 сентября 2011

java.sql.SQLException: Неверное имя столбца ixPersonOpenedBy.

Указанный столбец не возвращается SELECT.

И действительно, ни один из ваших двухSELECT запросов указывает этот столбец.Исправьте это соответственно.Например,

SELECT b.ixBug, b.sTitle, b.ixPersonOpenedBy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...