У меня есть запрос в Data Access Object DAOComments, который соединяет пользователей таблицы и комментарии таблицу, а затем сохранить результат в объект передачи данных DTOComments:Как манипулировать объектом передачи данных, если sql объединяет 2 таблицы?
private static final String SQL_FIND_WITH_USERNAME =
"SELECT u.username, comments.* FROM users u JOIN comments
ON u.id = comments.id ORDER BY created_date DESC LIMIT 10;";
Однако DTOComments не обладает свойством «имя пользователя» поскольку это свойство DTOUsers.
Вариант 1
Так что я решил использовать Map<String, DTOComments>
В этом случае карта имеет username as KEY, DTOComments as VALUE.
Но этот подход будет терпит неудачу, потому что я забочусь о порядке результата и именно поэтому мой запрос возвращает результат в порядке убывания. Если я повторяю карту на странице JSP, порядок не согласован, поэтому моя страница JSP выводит комментарий в случайном порядке.
(Даже если порядок не имеет значения, я не знаю, если JSTL может отображать КЛЮЧ открытой карты. Я знаю, отображается значение, хотя)
Вариант 2
Я мог бы поставить результат запроса в ArrayList<DTOComments>
Но я не вижу места для хранения "username"
сейчас. Может быть, я могу добавить новое свойство DTOComments как private String username;
хм ... это нарушило бы понятие наличия DTO, поскольку он ДОЛЖЕН отражать схему таблицы базы данных.
Вариант 3
Создать новый класс, хранить всю информацию мне нужно (то есть. Имя пользователя + свойства DTOComments).
Но только потому, что мне нужно еще одно свойство «имя пользователя» в дополнение к свойствам DTOComments, создание нового класса кажется неправильным.
Может ли кто-нибудь дать мне совет, как я могу хранить всю информацию, возвращаемую запросом выше, более организованным образом?
Неясно, что упорядоченность именно вы хотите. 'ORDER BY' пуст. Не могли бы вы рассказать? Вы хотите 'ORDER BY u.username, c.id' или' ORDER BY c.id'? Если первый, как вы хотите отобразить его в JSP? По идентификатору комментария или по имени пользователя, а затем комментировать ID? – BalusC
Упс, заказ по созданному_дайте, поэтому я хочу, чтобы комментарий отображался в самом последнем опубликованном порядке. Я сейчас обновляюсь. –