JPA+MySQLで、登録時はちゃんと登録できて、一覧でもちゃんと表示されてるのに、ある程度時間がたつと文字化けしているという現象が起きてちょっとはまってた。
MySQLの設定を見直したりしてたのだけど、これもしかしてJPAのキャッシュの問題じゃないか、と思って、JDBCで普通にデータ取得してみたら、JPA使ってるほうでは文字化けしていなくてもJDBCのほうでは文字化けしてる。
つまり、データベースにちゃんとデータが入ってない。
ということで、JNDIのJDBC接続プールの設定に
useUnicode: true characterEncoding: utf8
の2つのプロパティを追加して解決