在所有设置者调用后添加额外字段后获得回调?

时间:2011-09-02 20:53:25

标签: java hibernate

我想覆盖一个setter,以便我可以对数据执行某些功能,这样我就可以为我的实体返回一个计算列。该函数依赖于几列(例如COL1,COL2,...),因此我无法真正拦截任何特定的setter,因为其他值可能尚未填充。 hibernate是否提供某种“finish()”方法,可以在为实体设置值时调用一次?



  @Override
    @Column(name="COL1")
    public String getCol1() {
        return this.col1;
    }

    @Override
    public void setCol1(String value) {

        super.setCol1(value);
        genMagicValue();
    }

    public String getMagicValue() {
       return this.magicValue();
    }

2 个答案:

答案 0 :(得分:0)

除了hibernate提供的内容之外,是否不可能延迟使用magicValue,以便在第一次调用getMagicValue时调用计算,并且后续调用getMagicValue只返回计算值?

答案 1 :(得分:0)

我不明白你的问题, setCol1可能永远不会被调用(并保留其默认值)。 此外,没有人阻止您使用不同的值调用它两次。

或许您正在寻找的模式是:

  boolean magicDone=false;
  public String getMagicValue() {
       if (!magicDone){
           magicDone=true;
           genMagicValue();
       }
       return this.magicValue();
  }