В 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