Значение дискриминатора из отдельной таблицы в отображении наследования Hibernate - PullRequest
3 голосов
/ 05 октября 2011

У меня есть две таблицы, 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 "."
...