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;