SOQLは「SELECT * FROM~」は未サポート→何とか対応する

できたら嬉しいなーでも無理かなーと思って試したらエラーになった。しゃあないか。
SOQLでは全列のデータを取得するためにSELECT句に’*’を指定することはできない。

素朴に列名をぽちぽち書くのはさすがにしんどいので
全カラムを指定するSELECT句を生成するApexのユーティリティメソッドを書きたい。
「SObjectType.getDescribe().fields」みたいな書き方でオブジェクトのメタデータから
フィールド定義を取れるようなので普通にできそう。

できた。

Schema.getDescribe().getName()でオブジェクト名が取れる。
Schema.SObjectType.getDescribe().fieldsでオブジェクトの項目一覧が取れる。
単純にfieldsをぶん回すとよくわからないデフォルト項目?もいくつか入っているのでなんか不安になる。
なので「__c」で引っ掛けてカスタム項目のみ取り出す。
idとnameは欲しい場合もあるので、getSelectAllQueryの中でべたで指定している。

こちらで公開されているチートシート便利すぎる。


コメントを残す