在 ActiveJDBC 模型构建期间进行额外操作

Doing additional operations during ActiveJDBC Model construction

我有一个数据库 table words,所以我在 ActiveJDBC 中的 ModelWord.

当数据库中的一行被转换为 Word 模型时,我想执行一些额外的操作,例如将一些数据转换为枚举以获得更好的抽象。

我向模型添加了一个构造函数,它被适当地调用,但试图访问任何数据 returns null。这是 Word class(缩写):

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 保留为空 class,例如:

public class Word extends Model {}

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

您需要使用 CallbackListener 或 CallbackAdapter

请参阅 Lifecycle Callbacks 页面。

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

你需要的是这样的:

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