Spring DATA, JPA, Hibernate неожиданное удаление после запроса «многие ко многим» - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь реализовать учебный проект с помощью 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 удаляет связанные записи из таблицы соединений.

...