1
SQLコールを介してオブジェクトのセットをロードしようとしています。 SQLクエリは、必要以上に多くのプロパティを返します。 SQLクエリの修正以外。製品の宣言時に、余計なパラメータをすべて無視するにはどうすればよいですか?必要以上のプロパティの処理
import groovy.sql.Sql
class Product {
Integer id;
Integer type;
String unique;
}
def var = [];
sql = Sql.newInstance("jdbc:jtds:sqlserver://localhost/[DB]", "user", "password","net.sourceforge.jtds.jdbc.Driver");
sql.eachRow("select * from Products", { var << new Product(it.toRowResult()) });
私は例外を取得しています:
groovy.lang.MissingPropertyException: No such property: [other fields from the SQL result]
確かに意味があります。しかし、プロパティは、直接的な1対1のバインディングではなく、入ってくるハッシュマップに格納されていると想像しました。それで、余分なプロパティが問題を引き起こすことは私には意味がありません。私はここで間違っていますか? Groovyは、十分な情報を持っている場合にだけ、すべてのプロパティを満たさない場合には不平を言うことはありません。 – monksy
デフォルトでは、Groovyは実際にマップエントリをクラス内のプロパティにバインドします。したがって、余分なキーはgroovy.lang.MissingPropertyExceptionになります。製品(マップマップ)をオーバーライドすると、この動作を変更できます。 –