我的pojo类中有一个名为isActive的属性。当我使用Eclipse IDE为此属性生成访问器时,它会生成以下getter和setter
Getter : isActive()
Setter : setActive()
但是,当我尝试使用ibatis框架通过提及属性名称为“isActive”来编写此属性时,它会发现无法找到任何名为“isActive”的WRITEABLE属性。我认为问题在于无法通过将setter推断为setIsActive()来推断出正确的属性名称。
在不更改属性名称或getter的情况下,最好的方法是什么?
答案 0 :(得分:8)
原始布尔字段getter创建为isFieldName
。因此,在Ibatis中,您应该将属性名称设为active
而不是isActive
答案 1 :(得分:6)
pojo命名约定期望名为boolean
的{{1}}类型具有方法xxx
和isXxx
。
在你的情况下,你的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约定。谢谢!