【发布时间】:2019-04-29 11:06:21
【问题描述】:
我有一个 Java 项目,我正在转换为 Kotlin,但是具有关系和映射 @ManytoOne 的实体存在问题。他们正在使用映射 fecht 类型 LAZY 的实体,他们是否尊重 LAZY 并执行查询。
示例:
实体父亲:
@Entity
@Table(name = "TIPOSITUACAO")
data class TipoSituacao (
@Id
@Column(name = "ID")
val id: Long? = null,
@Column(name = "DESCRICAO")
val descricao: String? = null
)
实体儿子:
@Entity
@Table(name = "SITUACAO")
data class Situacao (
@Id
@Column(name = "ID")
val id: Long,
@Column(name = "DESCRICAO")
val descricao: String = "",
@Column(name = "TIPOSITUACAO_ID")
val tipoSituacaoId: Long? = null,
@ManyToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "TIPOSITUACAO_ID", referencedColumnName = "ID", insertable = false, updatable = false)
val tipoSituacao: TipoSituacao? = null
)
我的终点:
@RequestMapping("/api")
@RestController
class EndPoints {
@Autowired
private val situacaoRepository: SituacaoRepository? = null
val situacao: List<Situacao>
@GetMapping(value = ["/situacao"])
get() = situacaoRepository!!.findAll()
}
返回:
[
{
"id": 1,
"descricao": "SITUACAO 1.1",
"tipoSituacaoId": 1,
"tipoSituacao": {
"id": 1,
"descricao": "TIPO SITUACAO 1"
}
},
{
"id": 2,
"descricao": "SITUACAO 1.2",
"tipoSituacaoId": 1,
"tipoSituacao": {
"id": 1,
"descricao": "TIPO SITUACAO 1"
}
},
{
"id": 3,
"descricao": "SITUACAO 2.1",
"tipoSituacaoId": 2,
"tipoSituacao": {
"id": 2,
"descricao": "TIPO SITUACAO 2"
}
}
]
查询:
Hibernate: select situacao0_.id as id1_0_, situacao0_.descricao as descrica2_0_, situacao0_.tiposituacao_id as tipositu3_0_ from situacao situacao0_
Hibernate: select tiposituac0_.id as id1_1_0_, tiposituac0_.descricao as descrica2_1_0_ from tiposituacao tiposituac0_ where tiposituac0_.id=?
Hibernate: select tiposituac0_.id as id1_1_0_, tiposituac0_.descricao as descrica2_1_0_ from tiposituacao tiposituac0_ where tiposituac0_.id=?
如果我使用 @JsonIgnore、@JsonManageReference 或 @JsonBackReference em> o 儿子 TipoSituacao 直到没有返回,但查询继续执行。
我尝试使用 DTO,但同样的问题。
每次我使用 situacaoRepository.find 或者 findAll 的查询都会被执行。
有问题的项目链接:https://github.com/maxbrizolla/spring-kotlin-jpa-problem
有人可以帮助我吗?
【问题讨论】:
-
我认为我的问题类似:stackoverflow.com/questions/53816797/…
标签: java jpa kotlin lazy-loading many-to-one