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

какво е @JoinColumn и как се използва в Hibernate

Еднопосочна асоциация чрез таблица за свързване

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}

Двупосочна асоциация чрез таблица за свързване

@Entity
class Patient {

    @OneToMany
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

Еднопосочно свързване чрез външен ключ

@Entity
class Patient {

    @OneToMany
    @JoinColumn
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

}

Двупосочна асоциация чрез външен ключ

@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    private Patient patient;

}

Двупосочна асоциация чрез външен ключ със спецификация на името на чужда колона

@Entity
class Patient {

    @OneToMany(mappedBy = "patient")
    private Collection<Vehicle> vehicles = new ArrayList<Vehicle>();

}

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id")
    private Patient patient;

}

Това е основната отправна точка за използване на @JoinColumn .

За да проверите дали външният ключ (patient_id в Vehicle таблица) наистина е картографиран в таблицата на пациентите, можете да използвате @JoinColumn(nullable = false)

@Entity
class Vehicle {

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="patient_id", nullable = false)
    private Patient patient

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Дали SELECT или INSERT във функция е склонна към условия на състезание?

  2. Проверете дали NULL съществува в Postgres масива

  3. Грешка при опит за стартиране на pgAdmin4

  4. Инструмент за превод на Oracle PL/SQL в Postgresql PL/pgSQL

  5. Разлика в производителността:условието е поставено в клауза INNER JOIN спрямо WHERE