Присоединение к представлению в esqueleto
У меня есть SQL-представление V, которое имеет 0:1 соответствие таблице X. Я хотел бы присоединить это представление к другой таблице, Y, которая имеет ссылку на X (тип XId). Я указал представление, как и любую другую таблицу в постоянном. Столбец id V является ссылкой на X, но объявление представления в виде таблицы в персистентном, естественно, дает ему тип VId вместо XId. И поэтому я не могу присоединиться к представлению Y, потому что типы не совпадают.
Я понимаю, что могу сделать это с помощью rawSQL, но в моем запросе также есть предложение IN, которое, похоже, не очень хорошо работает со списком значений (используя rawSQL). Другой вариант - дважды выбрать столбец XId в представлении и указать дополнительный в качестве типа XId в определении модели. Наконец, я мог бы вернуться к вставке запроса представления встраиваемого или сделать запрос полностью с необработанным SQL, пропуская интерполяцию постоянных.
Есть ли способ сделать это, не прибегая к методам выше? Я бы предпочел использовать esqueleto, если это возможно.
1 ответ
Я еще не нашел правильного решения для этого.
В настоящее время я выбираю каждый первичный ключ дважды в представлении, например
... SELECT id, id AS xId...
наряду с добавлением типа ключа соответствующей таблицы ко второму выбранному идентификатору в схеме представления:
XView sql=xView
...
xId XId