У меня есть поле: «Страна» класса Entity, который является необязательным. Страна ссылается на таблицу, содержащую список идентификаторов с атрибутами страны.Как вернуть пустой объект, а не Null при левом соединении
Для того, чтобы включить строки в моей таблице, где ни одна страна не давалось я использовал:
.....createAlias("country_Id", "Co", Criteria.LEFT_JOIN);
Я предпочел бы пустой объект Страна должен быть возвращен, а не просто пустой для страны поле Entity объект.
Для начала - мой подход, получающий все строки таблицы, те, у кого/без страны правильные? Или есть лучший метод?
Наконец, вы посоветуете создать перехватчик, чтобы превратить нуль в объект пустой страны? В противном случае я просто обработаю его в своем коде, который обрабатывает возвращаемые результаты поиска, добавив инструкцию IF (null).
Я предлагаю вам проверить, если значение этого столбца равен нулю , затем выполните 'Country c = new Country();' или 'Country c = countryDAO.create();' если вы используете DAO, и у вас есть метод для создания пустых объектов (как в моем проекте). Наконец, просто нужно «... setCountry (c);» и вернуть объект, содержащий эту страну/пустую страну. – DaGLiMiOuX
выполните эту проверку после того, как результаты поиска будут возвращены мне, и я начну обрабатывать результаты? – user1782673
Точно. Когда запрос завершится, переходите к проверке своих элементов, если у них есть страна как «null» и добавьте ее в пустой объект. Если это только для 'get (KEY_TYPE id)', просто используйте 'if' и добавьте его. Если вы используете 'findAll()', вам придется использовать цикл, и это не очень хорошая идея, но я не знаю, есть ли другой способ сделать это (любой метод или свойство XML для 'hbm 'файлы). – DaGLiMiOuX