@ Брайан Чиассон
К сожалению, невозможно создать все классы данных ГИС, поскольку классы создаются динамически в приложении. Все данные ГИС того же типа должны быть классом, но у моего пользователя есть возможность получить новый набор данных и поместить их в базу данных. Я не могу знать заранее, какие классы мой пользователь будет иметь в приложении. Следовательно, внутренняя модель сопоставления для каждого класса не работает, потому что завтра появится еще одна новая таблица базы данных и потребуется создать новый класс с новым сопоставлением.
@ все
Может быть возможность написать собственный запрос в XML-файле конфигурации моего класса GisObject, а затем в классе доступа к данным, извлекая этот запрос с помощью
string qs = getSession().getNamedQuery(queryName);
и используйте строку replace для ввода имени базы данных (путем замены некоторой строки-заполнителя), которое я передам в качестве параметра.
qs = qs.replace(":tablename:", tableName);
Как вы относитесь к этому решению? Я знаю, что это может быть угроза безопасности в неконтролируемой среде, где имя таблицы будет выбрано как ввод данных пользователем, но в этом случае у меня есть мета-таблица, содержащая правильные и действительные имена таблиц для классов данных ГИС, которые я буду читать раньше вызов запроса для извлечения данных для определенного класса объектов ГИС.