У меня есть две таблицы, price_feed
и price_feed_type
.Ценовой канал будет содержать данные для различных реализаций ценовых каналов.
Теперь это обычно делается через тег <discriminator>
с полем дискриминатора в таблице price_feed
.Однако было бы предпочтительнее в контексте системы иметь это поле в таблице price_feed_type
.Я сталкивался с методом <discriminator formula="..."/>
и пытался работать с ним.
Одно из решений заключается в следующем (предположим, что это введено в атрибуте formula
):
(SELECT implementing_class FROM price_feed_type INNER JOIN price_feed ON price_feed.price_feed_type_id = price_feed_type.price_feed_type_id")
Другое решение заключается в следующем, и я должен отметить, что я пробовал как с priceFeedID
, так и с price_feed.price_feed_type_id
(SELECT implementing_class FROM price_feed_type WHERE price_feed_type.price_feed_type_id = price_feed.price_feed_type)
Любой из них дает следующую ошибку:
org.postgresql.util.PSQLException: ERROR: column timedprice3_.implementing_class does not exist
Anдополнительное примечание, без паратезов, я получаю сообщение об ошибке:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "SELECT"
Есть идеи, как это исправить?
РЕДАКТИРОВАТЬ:
Чтобы добавить то, что янайдено до сих пор:
Использование любого из них, если я сделаю SELECT *
, а затем сделаю SELECT implementing_class
снаружи, это выдаст другую ошибку.Полный код:
(SELECT implementing_class FROM (SELECT * FROM price_feed_type INNER JOIN price_feed ON price_feed.price_feed_type_id = price_feed_type.price_feed_type_id) AS foo)
Ошибка:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "."