Configuring the WSJPA persistence provider
The WebSphere® Application Server persistence provider (WSJPA) is the default provider for Java Persistence API (JPA) 2.0.
About this task
- Static SQL support using the DB2® pureQuery feature
- Access intent support
- Enhanced tracing support
- Version ID generation
- WebSphere product-specific commands and scripts
- Translated message files
- Check in-memory caches for lazily loaded many-to-one or one-to-one relationships. Setting the
wsjpa.BrokerImpl property to true specifies that the JPA implementation will attempt to load lazy
fields from memory at run time if the foreign key data for the lazy fields are available. Use the
following
property:
This property can be useful in many scenarios. For example, assume you have a person entity, Person(A), that has a one-to-one relationship to another person, Person(B), and Person(B) is stored in the L2 data cache. If this property is set, when the JPA implementation finds Person(A), the foreign key that is loaded from Person(A) will be used to populate the relationship from Person(A) to Person(B).<property name="wsjpa.BrokerImpl" value="checkCacheForLazyFields=true"/>
- The following table shows how the default values for the JPA for WebSphere Application Server persistence provider configuration
properties are different from the Apache OpenJPA provider:
Table 1. Comparison. JPA for WebSphere Application Server persistence provider and Apache OpenJPA provider comparison Property Apache OpenJPA default value JPA for WebSphere Application Server persistence provider default value openjpa.Compatibility StrictIdentityValues=false StrictIdentityValues=true openjpa.RuntimeUnenhancedClasses unsupported warn openjpa.DynamicEnhancementAgent true false open.jdbc.DriverDataSource auto simple

Error Message is:org.codehaus.jackson.map.JsonMappingException:
Can not construct instance of org.apache.openjpa.util.java$util$GregorianCalendar$proxy,
problem: no suitable creator method found at
[Source: org.apache.http.conn.EofSensorInputStream@d83fbd5; line: 1, column: 4094]
In addition to the property overrides, the use of the default JPA for WebSphere Application Server persistence provider also implies the use of the following JPA for WebSphere Application Server classes which override the corresponding classes in Apache OpenJPA:
com.ibm.ws.persistence.jdbc.kernel.ConstraintUpdateManager;
com.ibm.ws.persistence.jdbc.kernel.WsJpaJDBCBrokerFactory;
com.ibm.ws.persistence.jdbc.sql.DB2Dictionary;
com.ibm.ws.persistence.jdbc.sql.OracleDictionary;
com.ibm.ws.persistence.jdbc.sql.SQLFactoryImpl;
com.ibm.ws.persistence.jdbc.sql.SQLServerDictionary;
com.ibm.ws.persistence.kernel.WsJpaBrokerImpl;
com.ibm.ws.persistence.kernel.WsJpaFinalizingBrokerImpl;
If no JPA provider is configured in the <provider> element of the persistence.xml file within an Enterprise JavaBeans (EJB) module, the default JPA provider that is currently configured for this server is used. The product is packaged with the JPA for WebSphere Application Server persistence provider defined as the default provider. However, it is possible to override this default and specify a different default through the administrative console.
You can set your default persistence provider in one of two ways.
If you have a default persistence provider, default Java Transaction API (JTA) data source Java Naming and Directory Interface (JNDI) name, and default non-JTA data source JNDI name values that were set in the product before WebSphere Application Server Version 7.0, through the Java virtual machine (JVM) properties, any change to these values through the administrative console override values that were set with the JVM properties.
These properties include com.ibm.websphere.jpa.default.provider, com.ibm.websphere.jpa.default.jta.datasource, and com.ibm.websphere.jpa.default.nonjta.datasource. Support for these properties has been deprecated. Any values that were set through these properties are displayed as default values on this panel. These values that are set through the administrative console panel overrides any values set through the JVM properties.