0

我有一个带有一张表的数据库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 {}

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

4

1 回答 1

1

您需要使用 CallbackListener 或 CallbackAdapter

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

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

你需要的是这样的:

public class Word extends Model{
   public void afterLoad(){
     String spelling = getString(SPELLING); //you have data  now
   }
}
于 2015-09-13T18:15:14.773 回答