2011-02-11 4 views
4

최대 절전 모드에서 유일한 결과를 얻으려고 간단한 쿼리를 수행하려고합니다. 여기 내 코드입니다.최대 절전 모드 행에서 하나의 열을 선택하십시오.

public String getName(Integer id) { 
    Session session = getSessionFactory().openSession(); 
    String name = (String)session.createSQLQuery("SELECT name FROM users WHERE user_id = :userId").setParameter("userId", id).uniqueResult(); 
    return name; 
} 

반환되는 이름은 HTML syntacx 언어가 포함 된 HTML 텍스트로 저장됩니다. 나는 이것이 문제의 원인이라고 생각하지만 그것은 단지 문자열로 반환하고 싶지 않다.

이 필드 이름에서만이 문제가 발생합니다. 행의 다른 모든 필드를 가져올 수 있지만 오류가 발생합니다.

예외가 발생합니다. 내가 얻는 예외는

아니요. JDBC 유형에 대한 방언 매핑 : -1; 중첩 예외는 org.hibernate.HibernateException입니다.

최대 절전 모드에서 행의 특정 열을 어떻게 쿼리합니까?

+1

을 위해. 예외는 무엇입니까? –

+0

방금 ​​예외가 업데이트되었습니다. @Robby Pond – ComfortablyNumb

+0

당신은 어떤 방언을 사용하고 있습니까? "이름"의 유형은 무엇입니까? mysql 텍스트? –

답변

0

그러면 작동합니다. 최대 절전 모드 주석을 Type 사용하십시오.

당신의 매핑에

@Type(type="text") 

를 추가합니다.

+0

내 초보자가되어서 미안하지만 @Type은 내 모델에서 오류가 발생합니다. javax.persistence. *가 포함되어 있지만 @Type – ComfortablyNumb

+0

의 주석이 없습니다. Type은 Hibernate의 일부이다. org.hibernate.type. *을 포함한 –

+0

은 @Type 어노테이션을 사용할 수 없다. 또한 @Column (name = "name", columnDefinition = "TEXT")을 시도했지만 그 중 하나도 작동하지 않았습니다. – ComfortablyNumb

2

나는 분명히 자바는이 아래 스칼라 솔루션을 추가 할 수 있도록 텍스트 필드에 매핑 할 수 있습니다 입력하지 않은, 해결책을 알아 낸 : 감사합니다 잘 보이는 도움

session.createSQLQuery("SELECT name FROM users WHERE user_id = :userId").addScalar("name", Hibernate.TEXT).setParameter("userId", id).uniqueResult();