The JPA 2.0 specification says on page 22:
The instance variables of a class must be private, protected, or package visibility independent of whether field access or property access is used. When property access is used, the property accessor methods must be public or protected.
Why isn't public access allowed?