установщик для логической переменной, названной как isActive - PullRequest
5 голосов
/ 31 января 2011

У меня есть свойство isActive в моем классе pojo. Когда я сгенерировал методы доступа для этого свойства с помощью Eclipse IDE, он генерирует следующие методы получения и установки

Getter : isActive()
Setter : setActive()

Однако, когда я пытаюсь написать это свойство, используя инфраструктуру ibatis, упомянув имя свойства как «isActive», он не может найти ни одной записи свойства WRITEABLE с именем «isActive». Я думаю, что проблема заключается в невозможности определить правильное имя свойства, выводя setter как setIsActive ().

Каков наилучший способ сделать это без изменения имени свойства или метода получения?

Ответы [ 5 ]

8 голосов
/ 31 января 2011
Примитивные логические поля

создаются как isFieldName. Таким образом, в Ibatis вы должны указать имя свойства как active, а не isActive

6 голосов
/ 31 января 2011

Соглашение о присвоении имен pojo предполагает, что boolean типы, называемые xxx, будут иметь методы isXxx и setXxx.

В вашем случае ваше pojo должно выглядеть так:

public class MyPojo
{
  private boolean active;

  public boolean isActive()
  {
    return active;
  }

  public void setActive(boolean active)
  {
    this.active = active;
  }
}

Вы можете продемонстрировать это самостоятельно, создав класс в вашей среде IDE и определив переменную private boolean active, а затем получив IDE для генерации методов получения и установки.

0 голосов
/ 01 февраля 2011

Спасибо за ответы. Исходя из требований, которые у меня были, я не хотел менять свои переменные-члены класса pojo, используемая мной версия ibatis работала не так, как ожидалось. Когда я обновил свою версию до 2.3.4 с 2.3.0, проблема была решена, и тот же код работал без проблем. Я предполагаю, что с этим обновлением они учтены в соглашении Java-бинов о создании методов доступа isActive () и setIsActive (), если свойство типа логический примитив определено как isActive. Спасибо!

0 голосов
/ 31 января 2011

Я не использовал iBatis, но Hibernate позволяет указать имя метода доступа.Здесь вы можете переопределить поведение ORM по умолчанию для вычисления имени метода для установки свойства.

0 голосов
/ 31 января 2011

Выход есть.

Посетите Windows -> Настройки -> Java -> Стиль кода и отмените выбор свойства «Использовать» - «префикс ...» (конечно, вы можете изменить это в свойствах проекта, если не хотите, чтобы это было глобальным поведением в затмении).

Это изменит поведение на

Getter : getIsActive()
Setter : setIsActive()

Уродливо для моих глаз, но ибатис должен прекратить жаловаться сейчас.

...