Essentially the spec says that if one persistence provider supports this, that’s ok, but applications should not rely on this to work if they want to allow switching the JPA implementation. A portable application is one that can work with different JPA implementations i.e. only relies on specified behavior.