在我的服务中,我尝试向患者求医。 首先,我向医生添加了一些宠物。然后,当我尝试获取宠物列表时,将返回该列表,但是从Doctor_pet连接表中删除记录之后,下一次结果将为空列表。
@RequestMapping(value = ["/{id}/patients"], method = [RequestMethod.GET], produces = ["application/json"])
@ResponseStatus(HttpStatus.OK)
fun getPatients(@PathVariable("id") id: Long): ResponseEntity<List<Pet>> = ResponseEntity(doctorService.getPets(id), HttpStatus.OK)
医生课看起来像这样
@Entity
class Doctor: Serializable {
@Id
@GeneratedValue
var id: Long = 0
lateinit var name: String
@ManyToMany(cascade = [CascadeType.ALL])
@JoinTable(name = "doctor_pet"
, joinColumns = [JoinColumn(name = "doctor_id")]
, inverseJoinColumns = [JoinColumn(name = "pet_id")])
var pets = mutableListOf<Pet>()
}
宠物看起来像这样
@Entity
class Pet {
@Id
@GeneratedValue
var id: Long = 0
lateinit var name: String
var yearOfBorn: Int = 0
@ManyToMany(mappedBy = "pets")
var doctors = mutableListOf<Doctor>()
override fun toString(): String = "$name was born in $yearOfBorn."
}
我从DoctorDao存储库中获得了这样的宠物清单。
// Get pets for doctor from DoctorDaoImpl
override fun getPets(id: Long): List<Pet> {
val doctor = entityManager.find(Doctor::class.java, id)
return doctor.pets
}
@Repository
@Transactional
open class DoctorServiceImpl @Autowired constructor(@Qualifier("doctorDao") val doctorDao: DoctorDao) : DoctorService {
override fun saveDoctor(doctor: Doctor) {
doctorDao.saveDoctor(doctor)
}
override fun updateDoctor(doctor: Doctor) {
doctorDao.updateDoctor(doctor)
}
@Transactional(readOnly = true)
override fun findDoctor(id: Long): Doctor = doctorDao.findDoctor(id)
override fun getPets(id: Long): List<Pet> = doctorDao.getPets(id)
}
我怎么了?
更新
我从Dr.Dao医生那里领养宠物
休眠:从doctor_pet删除,其中doctor_id =?
整个日志是
休眠:选择doctor0_.id作为id0_0_,选择doctor0_.name作为名称0_0_ 来自Doctor0_医生,其中doctor0_.id =?休眠:选择 pets0_.doctor_id为Doctor1_0_1_,pets0_.pet_id为pet2_4_1_,pet1_.id 作为id1_0_,pet1_.name作为name1_0_,pet1_.yearOfBorn作为yearOfBorn1_0_ 来自doctor_pet pets0_内部,在pets0_.pet_id = pet1_.id上加入Pet pet1_ 其中pets0_.doctor_id =?休眠:从doctor_pet删除,其中 doctor_id =?休眠:选择Doctors0_.pet_id作为pet2_1_1_, doctors0_.doctor_id为doctor1_4_1_,Doctor1_.id为id0_0_, 来自doctor_pet doctors0_内部的doctor1_.name为name0_0_内部加入Doctor Doctors0_.doctor_id = doctor1_.id上的doctor1_,其中doctors0_.pet_id =?