JPA или Hibernate - объединение таблиц в столбцах разных типов - PullRequest
10 голосов
/ 23 июня 2010

Есть ли способ сообщить Hibernate обернуть столбец в to_char при его использовании для соединения с другой таблицей или обратного преобразования NUMBER в VARCHAR?У меня есть ситуация, когда у меня есть таблица, которая содержит столбец общего ключа типа VARCHAR, который хранит идентификатор другой таблицы, которая является числом.Я получаю исключение SQL, когда Hibernate выполняет генерируемый SQL, который использует '=' для сравнения двух столбцов.

Спасибо ...

PS Я знаю, что это не идеально, но язастрял со схемой, поэтому я должен иметь дело с ней.

1 Ответ

14 голосов
/ 23 июня 2010

Это должно быть возможно при использовании формулы в вашем множестве к одному. Из раздела 5.1.22. Элементы столбца и формулы (решение также упоминалось в этом предыдущем ответе ):

Атрибуты

column и formula могут даже сочетаться в одном и том же сопоставление собственности или ассоциации с экспресс, например, экзотическое соединение условия.

<many-to-one name="homeAddress" class="Address"
        insert="false" update="false">
    <column name="person_id" not-null="true" length="10"/>
    <formula>'MAILING'</formula>
</many-to-one>

С примечаниями (если вы используете Hibernate 3.5.0-Beta-2 +, см. HHH-4382 ):

@ManyToOne
@Formula(value="( select v_pipe_offerprice.offerprice_fk from v_pipe_offerprice where v_pipe_offerprice.id = id )")
public OfferPrice getOfferPrice() { return offerPrice; } 

Или, может быть, проверьте @JoinColumnsOrFormula:

@ManyToOne
@JoinColumnsOrFormulas(
{ @JoinColumnOrFormula(formula=@JoinFormula(value="SUBSTR(product_idnf, 1, 3)", referencedColumnName="product_idnf")) })
@Fetch(FetchMode.JOIN)
private Product productFamily;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...