Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hibernacja — czy istnieje sposób na połączenie 2 kolumn przeciwko 1?

Rozwiązanie 1

Utwórz widok bazy danych w Table1 który ujawnia klucz obcy odwołujący się do Table2 . Wyświetl klucz obcy z wysłanego zapytania, którego i tak użyjesz w widoku. Następnie zmapuj swoją jednostkę do widoku.

Rozwiązanie 2

Użyj formuły dołączania :

Na przykład w encji zmapowanej do Table1 zdefiniuj skojarzenie wiele do jednego z encji mapowanej do Table2 (wydaje się, że to twój przypadek użycia):

@ManyToOne
@JoinColumnsOrFormulas({
      @JoinColumnOrFormula([email protected](value="(SELECT t2.serial FROM Table2 t2 WHERE serial1 = t2.serial OR serial2 = t2.serial)", referencedColumnName="serial"))
    })
private Entity2 entity2;

Jednak formuły łączenia wydają się na razie bardzo delikatne w Hibernate (udało mi się to zrobić tylko dla skojarzeń wiele do jednego i musiałem utworzyć Entity2 zaimplementuj Serializable; w przeciwnym razie nie zadziałało i wyrzuciło jakiś dziwny NullPointer- i ClassCastException s).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obsługa transakcji w silniku MyIsam

  2. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:awaria łącza komunikacyjnego

  3. PHP/MYSQLI:mysqli_query nie działa w PHP

  4. Usuń z jednego stołu z dołącz

  5. Jak mogę WYBRAĆ wiersze z MAX (wartość kolumny), PARTITION według innej kolumny w MYSQL?