Как я могу иметь более одного объединения с одной и той же таблицей - PullRequest
0 голосов
/ 29 сентября 2018

В Scala Anorm с MySQL кажется, что соединение более одного раза в запросе несколько раз и работа с псевдонимами возвращает только значение последней таблицы, включенной в запрос.

Кажется, последнее соединение автоматическипереопределяет все предыдущие значения, даже если у него другой псевдоним.

См. пример ниже.

Скажем, у меня есть таблица mytable

id | name
1  | name1
2  | name2

И в mymaintable запись: myId1 = 1 и myId2 = 2

Если я сделаю

SELECT
t1.*, t2.*
FROM mymaintable AS m
JOIN mytable AS t1 ON t1.id = m.myId1
JOIN mytable AS t2 ON t2.id = m.myId2

Я бы ожидал 1, name1, 2, name2

Теперь в Anorm я бы определил aliaser так, чтобы

val aliaser = new ColumnAliaser {
      def as1 = ColumnAliaser.withPattern((0 to 2).toSet, "t1.")
      def as2 = ColumnAliaser.withPattern((2 to 4).toSet, "t2.")

      def apply(column: (Int, ColumnName)): Option[String] = as1(column).orElse(as2(column))
    }

и результат будет 2, name2, 2, name2

Это ошибка?Я делаю что-то не так?

Возможно, стоит отметить, что я использую anorm 2.5.3

...