allora il problema sta nel formato del file del codice java sorgente. IO ho avuto grossi problemi a validate 'ÿ' maiuscolo (per un sito finlandese) e alla fine ho dovuto rinunciare, poichè quel carattere non è parte dello standard UTF8 ma UTF16 e non potevo modificare l'encoding dei sorgenti.

Il tuo problema è probabilmente che il formato in cui salvi il sorgente è diverso da quello del db per cui succede che la stringa in java viene codificata nello stesso formato del file sorgente che è diverso da quello del db. Stessa cosa succede se usi UTF8 escape e il db è in un altro formato. Jdbc scrive il char nel formato in cui lo riceve (utf8 o non so cosa) e lo scrive nel db oracle dove tu hai configurato il charset giusto per contenere i caratteri greci.