3
respostas

NamedQueries e Constantes

"Uma outra característica imposta pelo uso das Named Queries é o uso dos Named Parameter. Não tem como concatenar a query na anotação, o que impõe logo de início a boa prática."

Dúvida: Como utilizar constantes em nossas named queries sem ter que passá-las como parâmetro?

3 respostas

Ola Anderson,

É possível concatenar o valor de uma constante na Named Query, caso tenha a constante disponível na classe.

Algo como:

@NamedQuery(
    name="seuNome", 
    query="SELECT xpto FROM SuaClasse " +
            " WHERE seuAttr = " + SuaClasse.SUA_CONSTANTE)
@Entity
public class SuaClasse {

    public static final String SUA_CONSTANTE = "Seu valor";
    ...
}

Talvez o que a citação acima quer dizer é que não é possível em um método, por exemplo, que vai utilizar a query, concatenar valores recebidos como parâmetro. Nesse caso somente é possível a utilização dos Named Parameters.

Vamos verificar por aqui o texto pra descobrir o caso e se necessário corrigir por lá.

Espero ter ajudado. Abraço!

Entendo, mas acho que fui mal compreendido. Eu trouxe essa citação pelo apelo da "imposição de boa prática" em não concatenar a query.

O "problema" que eu quero trazer está relacionado com o uso de constantes nas named queries sem a utilização de concatenação.

Pelo visto não tem jeito, de qualquer forma, obrigado.

Opa Anderson,

Desconheço outras formas além dessas mesmo. Darei uma olhada por aqui, caso haja alguma outra atualizo.

Abraço.