getObjEntity().getName()でオブジェクト名(テーブル名)を渡しているところがポイント。
public class CustomCayenneDataObject extends CayenneDataObject {
/*
* 主キーで検索するメソッド
*/
public Object selectById(Object id) {
ObjectIdQuery query = new ObjectIdQuery(new ObjectId(getObjEntity().getName(), ID_PK_COLUMN, id));
return DataObjectUtils.objectForQuery(getObjectContext(), query);
}
/*
* 複数の主キーを指定して検索するメソッド
*/
public List selectByIdList(List idList) {
checkObjectContext();
if (CollectionUtils.isEmpty(idList))
return null;
Expression expression = null;
expression = ExpressionFactory.inDbExp(ID_PK_COLUMN, idList);
// expression = ExpressionFactory.inExp(ID_PK_COLUMN, idList); // これだとだめ。変だろ!
SelectQuery query = new SelectQuery(getObjEntity().getName(), expression);
List objectList = getObjectContext().performQuery(query);
if (CollectionUtils.isEmpty(objectList))
return null;
return objectList;
}
}
0 件のコメント:
コメントを投稿