在 ActiveJDBC 模型构建期间进行额外操作
Doing additional operations during ActiveJDBC Model construction
我有一个数据库 table words
,所以我在 ActiveJDBC 中的 Model
是 Word
.
当数据库中的一行被转换为 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
}
}
我有一个数据库 table words
,所以我在 ActiveJDBC 中的 Model
是 Word
.
当数据库中的一行被转换为 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
}
}