Я не думаю, что то, чего вы хотели бы достичь, невозможно ни с помощью JPA, ни с Hibernate. При использовании стратегии объединенного подкласса PK подкласса является PK базового класса и используется для выполнения соединения между таблицами. Из спецификации JPA:
2.1.10.3 Стратегия присоединенного подкласса
В объединенной стратегии подкласса
корень иерархии классов
представлены одной таблицей. Каждый
подкласс представлен отдельным
таблица, содержащая те поля, которые
являются специфичными для подкласса (не
наследуется от своего суперкласса), как
а также столбцы, которые представляют
его первичный ключ. Первичный ключ
столбец (ы) таблицы подклассов служит
в качестве внешнего ключа к первичному ключу
стол суперкласса .
Вы можете использовать @PrimaryKeyJoinColumn
для изменения имени столбца в дочернем классе:
@Entity
@PrimaryKeyJoinColumn(name="PRODUCT_ID", referencedColumnName = "ID")
public class OrderProductTop extends ProductTop {
...
}
Но PRODUCT_ID
все равно будет ПК.
И, честно говоря, я не понимаю вашу физическую модель. Для меня то, что вы в данный момент представляете, это отношение один-ко-многим, что не правильно (это должно быть отношение один к одному).