Как изменить значение поля java только для чтения суперкласса в groovy? - PullRequest
0 голосов
/ 05 августа 2020

Я получил класс:

public abstract class AbstractEntity {
    
  @Getter
  @Column(nullable = false, unique = true, updatable = false)
  private UUID uuid = UUID.randomUUID();

}

и тест:

 def 'should be transitive: if x.equals(y) and y.equals(z) then x.equals(z)'() {
        given:
        AbstractEntity place = new Place()
        AbstractEntity secondPlace = new Place()
        AbstractEntity thirdPlace = new Place()

        and: 'all entities has same uuid what makes them equal'
        secondPlace.changeUuid(place.uuid)
        thirdPlace.changeUuid(place.uuid)

строка secondPlace.changeUuid(place.uuid) выдает исключение: groovy.lang.ReadOnlyPropertyException: Cannot set readonly property

Как я могу установить это поле значение без использования java отражения?

1 Ответ

0 голосов
/ 05 августа 2020

Кажется, у вас есть атрибут в @Column 'updatable = false. Моя первая реакция - подумать, что это останавливает обновление переменных.

Также нет аннотации @Setter, которая могла бы быть полезной в этом сценарии.

Тогда вы можете использовать этот метод в своем тесте .

...