My jboss seam application compile in eclipse without error. When I try to compile manually I have had a error
STATE_QUERY has private access
This doesn't exactly answer the question but I don't really see the point of using a constant for the query itself. I would just use something like this:
@Entity
@NamedQuery(name = Customer.FIND_ALL, query="select c from Customer c"),
public class Customer {
public static final String FIND_ALL = "Customer.findAll";
// Attributes, constructors, getters, setters
}
And the constant is public because... I want to be able to use it to execute queries:
Query query = em.createNamedQuery(Customer.FIND_ALL);
List customers = query.getResultList();
Using a constant for the name of the query makes sense because you'll refer to it from several places (from the @NamedQuery annotation, when invoking the query) and a constant makes your code more robust: it will resist to typing mistakes and refactoring. The advantages are obvious.
However, I personally don't see any real advantage in using a constant for the query itself.