Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация - Има ли начин да се обединят 2 колони срещу 1?

Решение 1

Създайте изглед на база данни в Table1 което разкрива външния ключ, препращащ Table2 . Проектирайте външния ключ от вашата публикувана заявка, която така или иначе ще използвате за изгледа. След това съпоставете обекта си с изгледа.

Решение 2

Използвайте формула за присъединяване :

Например в обекта, съпоставен с Table1 дефинирайте асоциацията много към едно с обекта, съпоставен с Table2 (изглежда, че е вашият случай на употреба):

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

Въпреки това формулите за присъединяване изглеждат много крехки в Hibernate за момента (успях да направя това да работи само за асоциация много към едно и трябваше да направя Entity2 имплементирайте Serializable; в противен случай не работи и хвърли някакъв странен NullPointer- и 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. стандартен метод за получаване на известие от базата данни при промяна/вмъкване

  2. Създател на заявки Laravel - Как да групирате по псевдоним или да направите необработено groupBy

  3. MySQL SELECT редове, съответстващи на масив?

  4. php примерен скрипт за пагинация

  5. Node.js ssh2 тунел поддържа жив и изпълнява mysql заявки