Nome de colunas com espaço e acentos no SQL Server com JPA

Olá!

Estou implementando um sistema com JSF e JPA onde preciso ler tabelas de uma base de dados do SQL Server 2008. O problema é que não consigo ler as tabelas que têm espaços e acentos nos nomes de colunas; retorna um “Incorrect syntax…”. É um banco em produção alimentado por outra ferramenta, então não dá para alterar isso. Abaixo o código que implementei para fazer a consulta:

public List<T> findOrderBy(List<String> orderByList) { CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); CriteriaQuery<T> cq = cb.createQuery(entityClass); Root<T> root = cq.from(entityClass); cq.select(root); if (orderByList != null) { cq.orderBy(cb.asc(root.get(orderByList.get(0)))); } return getEntityManager().createQuery(cq).getResultList(); }
Com esse mesmo código acima consigo ler as tabelas que não têm espaços e acentos nos nomes das colunas.

Se fizesse manualmente com PreparedStatement adicionaria "Nome da Coluna" e conseguiria, mas são inúmeras colunas, em inúmeras tabelas; realmente preciso do framework para isso. Alguém sabe como fazer isso com JPA?

Agradeço.

Você pode fazer por NamedQuery ou então NativeQuery.

JPA Consultas e Dicas