setter用于名为isActive的布尔变量

时间:2011-01-31 13:25:00

标签: java javabeans setter

我的pojo类中有一个名为isActive的属性。当我使用Eclipse IDE为此属性生成访问器时,它会生成以下getter和setter

Getter : isActive()
Setter : setActive()

但是,当我尝试使用ibatis框架通过提及属性名称为“isActive”来编写此属性时,它会发现无法找到任何名为“isActive”的WRITEABLE属性。我认为问题在于无法通过将setter推断为setIsActive()来推断出正确的属性名称。

在不更改属性名称或getter的情况下,最好的方法是什么?

5 个答案:

答案 0 :(得分:8)

原始布尔字段getter创建为isFieldName。因此,在Ibatis中,您应该将属性名称设为active而不是isActive

答案 1 :(得分:6)

pojo命名约定期望名为boolean的{​​{1}}类型具有方法xxxisXxx

在你的情况下,你的pojo应该是这样的;

setXxx

您可以通过在IDE中创建一个类并定义public class MyPojo { private boolean active; public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } } 变量,然后让IDE生成getter和setter来自行演示。

答案 2 :(得分:0)

有一条出路。

访问Windows - >偏好 - > Java - >代码样式并取消选择“使用'是'前缀...”属性(当然,如果您不希望将此作为eclipse中的全局行为,则可以在项目属性上更改此属性。)

这会将行为更改为

Getter : getIsActive()
Setter : setIsActive()

我的眼睛很丑,但ibatis现在应该停止抱怨。

答案 3 :(得分:0)

我没有使用过iBatis,但是Hibernate允许你指定访问方法名称。您可以在此处覆盖ORM的默认行为,以计算设置属性的方法名称。

答案 4 :(得分:0)

感谢您的回复。按照我的要求,我不想改变我的pojo类成员变量,我使用的ibatis版本没有按预期工作。当我从2.3.0将我的版本升级到2.3.4时,问题得到解决,同样的代码无缝地工作。我假设通过此升级,如果将类型为boolean primitive的属性定义为isActive,则它们会考虑生成isActive()和setIsActive()访问器的java bean约定。谢谢!