복붙노트

[SPRING] Hibernate에서 '@'문자로 어려움을 겪고있는 Hibernate

SPRING

Hibernate에서 '@'문자로 어려움을 겪고있는 Hibernate

최대 절전 모드 및 스프링 썬과의 협력을 통해,

전자 메일 주소로 데이터베이스를 쿼리하려고합니다. 이 쿼리를 할 때 :

나는이 예외를 얻는다.

이 문제를 해결할 수있는 방법이 있습니까?

전자 메일 주소에 @ 문자를 다른 문자로 저장하는 방법은 항상 있지만,이 솔루션보다 나은 것이 있는지 묻습니다.

해결법

  1. ==============================

    1.HQL 쿼리를 연결하지 마십시오. 대신 명명 된 매개 변수를 사용하십시오. 이것은 Hibernate에서 Query Object Pattern의 구현이다.

    HQL 쿼리를 연결하지 마십시오. 대신 명명 된 매개 변수를 사용하십시오. 이것은 Hibernate에서 Query Object Pattern의 구현이다.

    귀하의 경우 :

    Session session = sessionFactory.getCurrentSession();
    String selectQuery = "FROM Account as account WHERE account.username = :usernameParam";
    Query query = session.createQuery(selectQuery);
    query.setParameter("usernameParam", username);
    @SuppressWarnings("unchecked")
    List<Account> results = query.list();
    
    if(results.isEmpty()){
        return null;
    } else {
        return result;
    }
    

    Offtop : 해당 메소드에 대해 null 값을 반환하지 마십시오. 빈 콜렉션을 반환하는 것이 더 좋습니다. 예를 들어 새로운 ArrayList를 반환합니다. <> (); 따라서 Null Object 패턴을 암시 적으로 사용할 수 있습니다.

  2. from https://stackoverflow.com/questions/14458986/hibernate-having-difficulty-with-character-in-hql by cc-by-sa and MIT license