Query com um método na clausula where

Olá pessoal!

Gostaria de saber se tem como fazer uma consulta com HQL ou Criteria utilizando um método na clausula where.
Por exemplo:

class Teste {
    public int getTeste() {
        return 1+1;
    }
}

e escrever uma query assim:

    q = "from Teste teste where teste.getTeste() > 1"

Desde já obrigado!

Marcos

Amigo,
dessa forma que vc quer fazer a sua clausula where nao vai funcionar. Vai dar erro no select pois vc tá passando o metodo da classe.

[quote=jcmird]Amigo,
dessa forma que vc quer fazer a sua clausula where nao vai funcionar. Vai dar erro no select pois vc tá passando o metodo da classe.
[/quote]

Então, gostaria de saber se tem como fazer isso de alguma forma. Imagina o seguinte: tenho um método que retorna se o objeto está em um estádo válido:

class Order {
public boolean isValid() {
    return this.isOpen() || this.isPending();
}
}

Então gostaria de trazer todas as Order que sejam validas. Nesse caso eu teria que duplicar o código do isValid na query HQL.
Se eu pudesse usar o método na HQL seria o ideal. Outra saida, seria processar o resultado da query e colocar um filtro:

it = orders.iterator();
while (it.hasNext()) {
    Order o = (Order)it.next();
    if (! o.isValid()) continue;

    // restante do código.
}

Mas ai eu teria que trazer todos os registros, o que não é uma boa ideia.

Alguma sugestão?

Obrigado,
Marcos

Entendi o que você quer fazer.
Um dia já precisei! Mas não fiz com HQL…
Fiz uma PROC no banco e foi a saída que encontrei!
T-SQL foi a resposta dessa minha pergunta!
Mas se alguém souber, como faz isso com HQL, me interessaria bastante.
Flw!

[quote=skalinichenko]…
Fiz uma PROC no banco e foi a saída que encontrei!
T-SQL foi a resposta dessa minha pergunta!..
Flw![/quote]

Então, nesse caso, a lógica estaria na PROC, que vai me retornar todas as Order válidas. Ok!
Mas se em um determinado momento, eu quiser retornar uma Order qualquer do banco e verificar se ela é valida?

Uma forma mais abrangente de formular a questão: como usar a mesma lógica em um único objeto e
em uma coleção de objetos?

Se houver uma outra biblioteca externa ao Hibernate não teria problema.

Obrigado
Marcos