2012-03-02 4 views
0

다음 코드 스 니펫이 있습니다. 그것은 라인 3하지만 쿼리가 잘 managemnt 스튜디오를 작동 (SQL 서버 2005) 여기 org.hibernate.hql.ast.QuerySyntaxException을 얻는 것은 괜찮습니까?

String query = "select * from user where userId=" + profileId 
    + " and spaceName='" + spaceName + "'"; 

Session session = HibernateUtil.getSession(); 

List<PersonDetailsData> personDetailsData = new ArrayList<PersonDetailsData>(
    session.createQuery(query).list()); //line 3 

는 제외

org.hibernate.hql.ast.QuerySyntaxException에서 예외를 throw : 예기치 않은 토큰 : * 행 1 열 8 근방 [사용자로부터 선택 * 여기서 userId를 = 216 spaceName = 'DIG']

내가 P를 알아낼 수 아니다 쿼리를 사용하면 관리 스도 디에서 잘 돌아가고 있습니까?

답변

3

네이티브 쿼리가 아니고 hql입니다. 당신은 클래스 필드에 테이블 필드를 매핑 한 경우에 당신은

session.createSQLQuery(query, PersonDetailsData.class).list(); 

이 필요하거나 HQL 유형의 쿼리 작성 - 쿼리

select p from PersonDetailData p where p.userId = :userId and p.spaceName =:spaceName 

사용 매개 변수가 아닌 직접 값을.

+0

이 쿼리가 데이터를 반환하지 않는 경우 DainusI 한 번 더 질의를 즉 한 덕분에, query.list는 null 또는 null가되지 않습니다. null가 아닌 경우, personDetailsData.get (0)는 null 또는 null가되지 않습니다. (null 또는 null이 아닌 값을 기반으로 일부 작업을 수행해야하기 때문에) –

+0

list()를 호출하면 null을 반환하지 않지만 단일 개체 "getSingleResult()"에 대해 특별한 방법이 있습니다. 결과가 없을 때 예외를 throw합니다. – Dainius

1

당신이

sess.createSQLQuery("SELECT * FROM CATS").list(); 

소스를 참조 같은 SQL 쿼리를 만들 필요가 있도록 SQL 쿼리를 사용하는 것처럼 source

관련 문제