0

私は1つのテーブルを持つデータベースを持っている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を使用する必要があります

ライフサイクル コールバックのページをご覧 ください。

SPELLING の理由nullは、モデルの作成時に属性値がまだ設定されていないためです。

必要なものは次のようなものです。

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