- PR -

ORマッパーMr.Persisterの手動マッピングについて質問です。

1
投稿者投稿内容
osiete
常連さん
会議室デビュー日: 2008/03/17
投稿数: 26
投稿日時: 2008-03-17 11:57
ORマッパーMr.Persisterを使用してDBアクセスを行っています。

readListメソッドを使用し複数テーブルからのデータ検索時に
IObjectMappingを使用してデータ結果の格納クラス、格納フィールドを
手動で設定したいのですがうまくいきません。

どのような設定を行えばいいのでしょうか?
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-03-17 12:37
よく見てないから分からんけど、Custom Object Mapping(www.jenkov.com)のとおりにやれば出来そうな気がする。
osiete
常連さん
会議室デビュー日: 2008/03/17
投稿数: 26
投稿日時: 2008-03-17 13:54
自分も公式サイトのドキュメントと
付属のjavaDocを参考にしてやっているのですが
英語の理解度が低いのかうまくいかないです・・。

以下、自分のソースとエラーです。(本番の奴は長いので簡略化しました。)



sql.append(" select t1.CODE as CODE");
sql.append(" ,t2.TITLE as TITLE");
sql.append(" from test1 t1" );
sql.append(" ,test2 t2" );
sql.append(" where t1.CODE = t2.CODE(+)" );


IObjectMappingFactory factory = new ObjectMappingFactory();
IObjectMapping mapping = factory.createObjectMapping();

mapping.setObjectClass(TestBena.class); ←格納クラスを指定?
mapping.setTableName("test1"); //← テーブル名を指定する?(結合時は?)

//格納クラスのフィールド名とカラム名を指定?
//おなじ時はいらない?
/*
try {
factory.addSetterMapping(mapping,"setCode","CODE",true);
factory.addSetterMapping(mapping,"setTitle","TITLE",true );
} catch (Exception e) {
e.printStackTrace();
}
*/
return dao.readList(mapping,sql.toString());


以下 エクセプション
com.jenkov.mrpersister.itf.PersistenceException: No object mapping stored in the object mapping cache for theobject mapping key: Class: test.db.entity.TestBena
Table: test1
-------------------
, and no object mapping could be generated for it either.
at com.jenkov.mrpersister.impl.mapping.ObjectMapper.getObjectMapping(ObjectMapper.java:128)
at com.jenkov.mrpersister.impl.GenericDao.getObjectMapping(GenericDao.java:285)
at com.jenkov.mrpersister.impl.GenericDao.readList(GenericDao.java:394)


何か分かるかたいましたらよろしくお願いします。

全然見当違いのやり方かもしれませんがよろしくお願いします。
osiete
常連さん
会議室デビュー日: 2008/03/17
投稿数: 26
投稿日時: 2008-03-18 13:40
解決しました、前回アップしたソースはやはり全然間違っていました。
mappingの設定はCustomObjectMapperBaseのgetObjectMappingメソッドをオーバーライドしその中で設定したらうまくいきました。
他にも簡略化した設定方法などありそうですがとりあえず取得はできました。

かずくんさま回答ありがとうございます。
公式のドキュメントを見直していたらちゃんと書いてありました・・・・。
ありがとうございます。

他にまた質問がありましたらスレッド立てさせていただくかもしれません。
1

スキルアップ/キャリアアップ(JOB@IT)