2011-09-12 2 views
1

Eclipse, Maven 및 Tomcat을 사용하여 Java 프로젝트 내에 배포 할 JSP 파일이 있습니다. 다른 작업을 실행하더라도 거의 동일한 JSP 파일이 있습니다. 내가 페이지로 이동하면 어쨌든, 나는이 준 :SQLException : 잘못된 열 이름 ...?

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, 제목 및 PROJECT_ID는 데이터베이스에 저장된 버그 테이블에서 열 이름에 해당하는 버그 클래스의 모든 문자열 구성원

. 이제 테이블에 ixPersonOpenedBy 열이 있지만 이전에는 아무런 문제가 없었습니다. 나는 그것이 실행하려고하는 SQL 문과 관련이 있는지 확신 할 수 없지만 이전에 다른 JSP에서 똑같은 명령문을 사용했고 나에게 어떤 문제도주지 않았다. 또한이 오류는 이전 프로젝트 배포에서 나타나지 않았습니다. 관련이없는 변수에 오타가 있었는데 일단 수정되면 아무데도 튀어 나오지 못했습니다. 이 오류가 나는 열을 알고 주어 이유

어쨌든, 사람이 볼 수있는 유효 "해야한다"? JSP, 버그 클래스 또는 데이터베이스 내의 버그 테이블을 더 많이 볼 필요가 있다면 알려주십시오. 어떤 도움을 주셔서 감사합니다.

편집 : 여기 내가 사용하고 두 SQL 문,하지만 난 하나가 문제를 일으키는 지 모르겠어요.

psBug.setInt(1, Integer.valueOf(personId).intValue()); 
+0

당신은 SQL 문을 게시 할 수 있습니까? – aldrin

+0

그래, 뭐. 나는 원래 게시물에 사용하고있는 진술을 모두 추가했다. –

+0

그리고 create table 문과 Bug.PERSON_OPENED_BY 값이 바람직합니다. – extraneon

답변

5

은 java.sql.SQLException : 잘못된 열 이름 ixPersonOpenedBy

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 

번째 문장에서 매개 변수

가 채워진다.

언급 된 열은 SELECT에 의해 반환되지 않습니다.

그리고 사실은, 당신이 SELECT 쿼리의 아무도는 열을 지정합니다. 적절하게 수정하십시오. 예 :

SELECT b.ixBug, b.sTitle, b.ixPersonOpenedBy 
+0

이제는 페이지를 추가 한 후에 페이지를 표시합니다. 왜 그 열을 추가해야만하는지 모르겠습니다. 특히 그것을 사용하지 않았기 때문에. –

+0

당신은'Bug' 클래스의 생성자에서 이것을 사용하고 있습니다. 만약 당신이 그것을 사용하지 않는다면 아마 그 라인을 제거해야할까요? :) 그런데 매핑 방법은 솔직히 끔찍하고 매우 90 년대라고합니다. http://stackoverflow.com/questions/ ([자바 빈즈 (http://stackoverflow.com/questions/1727603/places-where-javabeans-are-used)와 [JSP에서 자바 코드를 피하는]에 대해에 대해 조금 알아보기 3177733/how-to-avoid-java-code-in-jsp-files). 꼭대기에 크림을 뿌리려면 JPA에서 모든 JDBC 상용구를 교체하십시오. – BalusC

+0

그래, 나는 자바와 웹 기반 개발이 처음이다. 제가 사용하고있는 많은 코드는 작동하는 기존 코드로 모델링됩니다. 그리고 내가 본 코드가 90 년대 처음 쓰여진 것은 의심의 여지가 없습니다 ... –