Я пытаюсь реализовать учебный проект с помощью Spring (не Boot), для постоянного использования я использую Spring Data, Hibernate, jPA.
У меня есть питомец и доктор. Я хотел бы реализовать связи «многие ко многим» между ними.
Это Пэт
import javax.persistence.*
@Entity
class Pet {
@Id
@GeneratedValue
var id: Long = 0
lateinit var name: String
var yearOfBorn: Int = 0
@ManyToMany(mappedBy = "pets")
val doctors = mutableListOf<Doctor>()
override fun toString(): String = "$name was born in $yearOfBorn."
}
Это Доктор
import java.io.Serializable
import javax.persistence.*
@Entity
class Doctor: Serializable {
@Id
@GeneratedValue
var id: Long = 0
lateinit var name: String
@ManyToMany
@JoinTable(name = "doctor_pet"
, joinColumns = [JoinColumn(name = "doctor_id")]
, inverseJoinColumns = [JoinColumn(name = "pet_id")])
val pets = mutableListOf<Pet>()
}
Это классы Дао для них
import hu.infopro.model.Pet
import org.springframework.data.jpa.repository.JpaRepository
interface PetDao : JpaRepository<Pet, Long>
import hu.infopro.model.Doctor
import org.springframework.data.jpa.repository.JpaRepository
interface DoctorDao : JpaRepository<Doctor, Long>
Я успешно сохраняю домашних животных, врачей и соединяю их друг с другом.
Я также могу проверить результат в MySQLWorkbrench.
У меня есть стол 'pet', стол 'doctor' и стол 'doctor_pet'.
Я спрашиваю домашних животных о докторе, отыскиваю запись доктора по его идентификатору и получаю его собственность домашних животных.
Возвращает хорошо, что домашние животные были назначены врачу, но в этот момент Hibernate удаляет связанные записи из таблицы соединений.