We are trying to deploy a Java 7 Spring MVC application using Hibernate into an IBM WebSphere 8.5.5.2 server. The application runs fine on a Tomcat server, but we cannot get
The javax/persistence/Table.indexes()
is from JPA 2.1, WebSphere Application Server traditional 8.5.5.2 is using by default JPA 2.0 (OpenJPA). If you want to use Hibernate you have to override the default provider - check this post for more details.
UPDATE
Yes, you are correct. You cannot override default provider in WebSphere traditional 8.5.5.x with JPA 2.1 as container relies on 2.0 api for initialization.
If you have to use 2.1 you may use it as application managed provider not container managed. So you would need to disable JPA for your application, check this and instead of rely on container on injecting EntityManager, initialize it by your self using API.
The other option would be to consider WebSphere Liberty which supports JPA 2.1 (using EclipseLink) starting from version 8.5.5.6. It should be possible to change provider there since container supports 2.1, however I didn't have time to test it.
You can also upgrade to WebSphere Application Server v9, recently released, which supports JPA 2.1.