JPA Выбрать элемент по ForeginKey - PullRequest
0 голосов
/ 24 августа 2018

Я хочу получить данные из базы данных, используя 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

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...