Обработка большего количества свойств, чем необходимо - PullRequest
1 голос
/ 27 июля 2011

Я пытаюсь загрузить набор объектов с помощью вызова 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 голос
/ 27 июля 2011

Поведение Groovy по умолчанию выдает groovy.lang.MissingPropertyException всякий раз, когда вы пытаетесь установить значение для свойства, которое не существует в bean-компоненте. Я не совсем уверен, сможете ли вы изменить это поведение. Однако вы можете написать вспомогательный метод, который отфильтровывает несуществующие свойства.

def filterResult(bean, row) {
    def filteredProps = [:]

    row.each { key, value ->
        if(bean.metaClass.properties.find { prop -> prop.name == key }) {
            filteredProps.put(key, value)  
        }
    } 

    filteredProps
}

def var = []

sql.eachRow("select * from Products", { 
    var << new Product(filterResult(Product, it.toRowResult())) 
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...