I've just recently started using OpenJPA and from a new user perspective I interpreted "openjpa.RuntimeUnenhancedClasses=supported" to mean first check if the code is running within an app server and let the app server enhance the classes *then* fallback and actually do a runtime enhancement. It turns out "supported" may be better described as "true" in that it only makes one enhancement attempt then fails. I can successfully use "supported" when running my small JPA project not in an app server but when I put it on an app server I need to create my emf in a slightly different manner:
if (isWebSphere()) { Map<String, String> configOverrides = new HashMap<String, String>(); configOverrides.put("openjpa.RuntimeUnenhancedClasses", "unsupported"); entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, configOverrides); } else { entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName); } I wish "supported" tried harder before failing. I've glanced at OPENJPA-377 and OPENJPA-651. Maybe I'm approaching things incorrectly? Does enhancing my classes at build time in my Ant script give me the same outcome/performance as letting the app server enhance my classes?