Прошу прощения, там выставляли charset в свойствах соединения. Кстати, какие кодировки вы пробовали установить?
Смотрите, там по второй ссылке автор говорит, что использует Hebrew без проблем. Данные в базе у него в UTF8. В общем вам стоит поэкспериментировать с кодировками базы и соединения. docs.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html
Думаю, что если вы поделитесь своими находками, то, вероятно, эксперты в этой области смогут указать более правильный подход в решении тех или иных проблем в комментариях. А могут, конечно, и не указать.
Это не помогло, но помогло кое-что другое. Видать значения Query кешируются где-то, в общем надо поглубже копнуть. Но если вы вставите evictAll строчку то приложение работает как надо pm.evictAll();
Test d;
if(new_id!=null)
{
Идея в том, что PM вызывает flush автоматически. И не факт, что после сохранения в коде PersistanceManager синхронизирует объекты с БД сразу же. Так это работает в Hibernate, по крайней мере.
Кстати, а что там с транзакциями? В JPA они не нужны разве?