2012-03-16 3 views
0

У меня проблема с hibernate @NamedQueries. У меня есть таблица SCP_PMAT с колонкой с именем «группа». В картографии не проблема. Это я решаю с помощью скобок.Hibernate @NamedQueries с зарезервированным словом

public class ScpPmat{ 
    @Column(name = "[group]") 
    private String group; 
} 

Но когда я хочу использовать @NamedQuery, есть проблема. Как я могу написать имя столбца для запроса?

@NamedQuery(name = "readScpPmatByGroup", 
query = "FROM ScpPmat where group = :group") 

Надеюсь, что этого кода достаточно. Благодаря

+1

Не забудьте принять ответ, если он удовлетворительный. –

ответ

0

Вы можете заключить зарезервированное слово в кавычки:

query = "FROM ScpPmat where \"group\" =:group") 
+1

Я пробовал это, но с этим исключением. Ошибка в именованном запросе: readScpPmatByGroup org.hibernate.QueryException: неожиданный char: '' '[FROM core.dao.ScpPmat где «group» =: group] ' – yen1k

+1

Я попробовал это с помощью скобки тоже .. .. но то же исключение ..: -/ – yen1k

1

Лучший вариант: изменить название столбца, чтобы не быть зарезервированным словом. В целом, это плохая практика для этого и может вызвать головные боли как в Java-коде, так и в SQL, в соответствии с тем, что вы испытываете.

Другим вариантом было бы изменить имя поля Java из зарезервированного слова на незарезервированное слово, например groupCol.

+0

Конечно, это лучший. Позволяет поговорить с нашей базой данных «специалист» – yen1k

Смежные вопросы