Use your pre-existing JPA entity code in the browser.
Sync portions of
your database across the wire by writing JPQL queries.
Sync your entity state to
your UI with Errai Data Binding.
As you move toward a more and more declarative style, you allow the compiler and the framework to catch more mistakes up front. Broken links? A thing of the past!
The problems you're actually trying to solve are complex enough as it is. Don't make the novel code that solves your specific problems into the needle in a haystack of configuration, repetitive meaningless drivel, and ornate constructions that work around the framework.
When it comes to solving a business problem in code, once is more than enough! As compelling as the autonomous AJAX based client architecture is, when your client code is in JavaScript and your server code isn't, you're now committed maintaining two apps in parallel, and keeping them up-to-date in lock step.