Я хочу получить данные из базы данных, используя Springs CrudRepository
Код, который у меня есть:
Регион:
@Entity
@Table(name = NAME)
data class Region(
@Id @GeneratedValue val id: Long,
val name: String,
val lat: Double,
val lon: Double,
@CollectionTable(name = "RegionAlternateName", joinColumns = [JoinColumn(name = "id", referencedColumnName = "id")])
@ElementCollection(fetch = FetchType.EAGER)
@Column(name = "name")
val alternateNames: List<String>
) {
companion object {
const val NAME = "Region"
}
}
Подрегион:
@Entity
@Table(name = NAME)
@NamedQueries(
NamedQuery(name = "Region.findByRegionId", query = "SELECT e FROM SubRegion e WHERE (e.region.id) =:regionId")
)
data class SubRegion(
@Id @GeneratedValue val id: Long,
val lat: Double,
val lon: Double,
@OneToOne(fetch = FetchType.EAGER) @JoinColumn(name = "id") val region: Region
) {
companion object {
const val NAME = "SubRegion"
}
}
SubRegionRepository:
@Repository
interface SubRegionRepository : CrudRepository<SubRegion, Long> {
fun findByRegionId(regionId: Long): SubRegion?
}
Но когда я использую метод
subRegionRepository.findByRegionId(3)
Я получаю SubRegion с id = 3, а не "Some" Субрегион, который принадлежит Region с id = 3
Что я делаю не так?