繁体   English   中英

在ActiveJDBC模型构建过程中执行其他操作

[英]Doing additional operations during ActiveJDBC Model construction

我有一个表的数据库words ,所以我的Model在ActiveJDBC是Word

将数据库中的行强制转换为Word模型时,我想执行一些其他操作,例如将一些数据强制转换为枚举,以实现更好的抽象。

我在模型中添加了一个构造函数,该构造函数被适当地调用,但是尝试访问任何数据都会返回null 这是Word类(已缩短):

public class Word extends Model {

    private static final Logger log = LogManager.getLogger(Word.class);
    public static final String SPELLING = "ortho";

    public Word() {
        log.info("In constructor");
        log.info("Word spelling: " + getSpelling());
    }

    public String getSpelling() {
        return this.getString(SPELLING);
    }
}

但我在日志中得到以下内容:

10:31:49.372 [main] INFO Word - In constructor
10:31:49.373 [main] INFO Word - Word spelling: null

我需要能够将其中的某些字段转换为枚举并以其他方式对其进行操作,以便更轻松地使用它。

我是否应该将Word留为空类,例如:

public class Word extends Model {}

并让另一个类在构造函数中使用它? 这会造成很多不必要的麻烦,尤其是在使用List<Word> ……在ActiveJDBC中创建Model对象期间操纵数据的最佳方法是什么?

您需要使用CallbackListener或CallbackAdapter

请,请参阅“ 生命周期回调”页面。

SPELLING为null的原因是,在创建模型时,尚未设置属性值。

您需要的是这样的:

public class Word extends Model{
   public void afterLoad(){
     String spelling = getString(SPELLING); //you have data  now
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM