mysql - 内部联接查询在 JPA 自定义查询中不起作用
问题描述
我想使用 JPA 自定义查询执行内连接查询,当我在 @Query() 中定义内连接查询时,它会抛出一个异常的结果。当我在 MYSQL yog 编辑器中编写相同的查询时,此查询工作正常,没有问题。但是在我的数据库表组织中使用 JPA 生成问题,将 address_id 作为外键。address_id 列名自动生成,没有我在实体类中定义 address_id 的地方。当我通过调用 organization.address=Address.id 触发内部联接查询时显示以下错误类型
Type mismatch: com.nilmani.onetooneunidirectional.entiry.Address type is expected
这里是查询 organizationRepository.kt
package com.nilmani.onetooneunidirectional.repository
import com.nilmani.onetooneunidirectional.entiry.Organization
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.data.jpa.repository.Query
interface OrganizationRepository : JpaRepository<Organization,Long> {
@Query("SELECT Organization .id,Organization .name,Address .building,Address .city FROM Organization INNER JOIN Address WHERE Organization.address =Address .id")
fun findSomeRelationalFeatures()
}
组织.kt
package com.nilmani.onetooneunidirectional.entiry
import javax.persistence.*
@Entity
data class Organization(
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
val id:Long=-1,
var name:String="",
var orgId:String="",
@OneToOne(targetEntity = Address::class,cascade = [CascadeType.ALL])
var address: Address
)
地址.kt
package com.nilmani.onetooneunidirectional.entiry
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id
@Entity
data class Address(
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
val id:Long=-1,
val building:String="",
val street:String="",
val city:String="",
val state:String="",
val country:String="",
val zipCode:String=""
)
解决方案
尝试这个 :
select o from Organization o inner join fetch o.address