Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hibernate - Apakah ada cara untuk menggabungkan 2 kolom melawan 1?

Solusi 1

Buat tampilan database pada Table1 yang memperlihatkan referensi kunci asing Table2 . Proyeksikan kunci asing dari kueri Anda yang diposting yang akan tetap Anda gunakan untuk tampilan. Kemudian petakan entitas Anda ke tampilan.

Solusi 2

Gunakan rumus bergabung :

Misalnya, dalam entitas yang dipetakan ke Table1 mendefinisikan asosiasi banyak-ke-satu dengan entitas yang dipetakan ke Table2 (sepertinya kasus penggunaan Anda):

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

Namun, formula gabungan tampaknya sangat rapuh di Hibernate untuk saat ini (saya berhasil membuat ini berfungsi hanya untuk asosiasi banyak-ke-satu dan saya harus membuat Entity2 implementasikan Serializable; jika tidak, itu tidak berhasil dan melemparkan beberapa NullPointer- yang aneh dan 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. MySQL 8 mengabaikan panjang integer

  2. Bagaimana cara melakukan pencarian aksen dan case-insensitive di database MediaWiki?

  3. menjalankan rata-rata di mysql

  4. Laravel + Vagrant =Akses ditolak untuk pengguna 'root'@'localhost'

  5. Baris pivot MySQL menjadi jumlah kolom dinamis