Могу ли я преобразовать отношение ManyToOne в отношение OneToOne с помощью составного ключа?

Я пытаюсь упорядочить список объектов в зависимости от того, кто вошел в систему, и на основе последнего выполненного действия.

Например, я вошел в систему как администратор А, и в списке людей я что-то делаю в профиле пользователя С.

Мне нужен вывод:

  • для админа A: люди упорядочены так: C-A-B-D-E...
  • для других админов: люди упорядочены так: A-B-C-D...

Для этого я сделал таблицу с этим атрибутом:

  • идентификатор: автоматически сгенерированный
  • adminId
  • Идентификатор пользователя
  • Дата последнего действия

Со ссылкой OneToMany (один пользователь -> много заказов) между двумя таблицами (mappedBy: userId, инвертированный iD), потому что у данного пользователя может быть разное «DateOfLastAction» в соответствии с adminID, который выполнил действие.

Теперь проблема в том, что когда я хочу заказать своего пользователя с помощью DateOfLastAction, я не могу этого сделать из-за отношения OneToMany.

(делая подобный ответ в этом post)

Так что лучше всего было бы преобразовать его в реальность *ToOne. Поможет ли мне составной первичный ключ? Есть ли у кого-нибудь идеи по лучшему дизайну?


person Lilian Barraud    schedule 17.04.2018    source источник
comment
Вы пытались добавить левое соединение к вашему запросу «люди» с вашей новой таблицей, затем упорядочить по DateOfLastAction и упорядочить по идентификатору?   -  person Charlie Lucas    schedule 18.04.2018
comment
Я попробовал то, что вы сказали, и ... это не позволит мне ... в Сонате, в вашем администраторе, вы можете изменить запрос, перезаписав метод createQuery, хотя вы не можете выбрать выбранное поле. Кроме того, это не позволит мне установить OrderBy в невыбранном поле. Итак, я сделал leftJoin, но он не позволил мне orderBy('DateOfLastAction','DESC') напрямую в запросе   -  person Lilian Barraud    schedule 18.04.2018
comment
Если вы можете перезаписать запрос, у вас есть возможность это сделать, действуйте по шагам. Я думаю, вам не хватает псевдонима для вашего заказа, можете ли вы скопировать запрос?   -  person Charlie Lucas    schedule 19.04.2018