JPA или Hibernate-объединение таблиц на столбцах разных типов

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

спасибо...

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

1 ответов


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

column и formula атрибуты даже быть объединены в одном сопоставление свойств или ассоциаций с экспресс, например, exotic join условия.

<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;