Quando uma classe de entidade usa o acesso propriedade ao colocar anotações nos métodos getter e setter, um método getter e um método setter devem ser definidos para um campo a ser persistido. Métodos getter anotados que não são acompanhadas por um método setter são ignorados pelo OpenJPA, enquanto que, nesta situação, o EclipseLink lança uma exceção.
Esta regra sinaliza métodos getter anotados para os campos de acesso de propriedade nos quais um método setter está ausente. Revise a definição de entidade e modifique-a para se comportar conforme pretendido. Se você desejar que o campo seja ignorado pelo provedor JPA, remova quaisquer anotações no método getter. Se você desejar que o campo seja persistido, inclua um método setter.
Na classe de entidade a seguir, o método getVersion é sinalizado pela regra.
package entities; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; import javax.persistence.Version; @Entity public class MissingSetter2 { private int id; private long time; public MissingSetter2 (int id) { this.id = id; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } // Este getter é anotado, portanto, ele não é sinalizado. public long getTime() { return time; } // Este getter é sinalizado porque ele é anotado e não há nenhum setter. @Version public double getVersion() { return 2.0; } public MissingSetter2() { time = 0; } } |
Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.