Возможно, вы уже знаете, но есть аннотация @NamedQuery. Однако я даже не могу убедить себя, что это имеет какие-то преимущества по сравнению с жестким кодированием строки запроса в соответствующем DAO (при условии, что вы используете DAO и не обращаетесь к сеансу напрямую - тогда может быть случай для аннотации @NamedQuery) ,