Я использую QueryDSL 4.3.0 У меня есть сущность:
@Entity(name = "person_certificate")
@Table(name = "person_certificate")
data class PersonCertificate(
@Id
val id: String = UUID.randomUUID().toString(),
@Column(name = "expiration_date", nullable = false)
val expirationDate: LocalDate,
@Column(nullable = true)
val fileId: String?,
@ManyToOne
val person: Person,
@Transient
val status: String? = null
)
Я хочу получить все ресурсы для идентификатора человека, и мне нужны некоторые вычисления данных, поэтому мне нужно использовать JPASQLQuery.
Итак, у меня есть следующий код:
val sqlQuery = JPASQLQuery(
entityManager, MySQLTemplates.builder()
.build()
)
val resultList = sqlQuery
.from(pc)
.where(pc.person.id.eq(personId))
.fetch()
, который генерирует следующий запрос:
select personCertificate.id as id1_7_0_, personCertificate.certificate_id as certific4_7_0_, personCertificate.expiration_date as expirati2_7_0_, personCertificate.file_id as file_id3_7_0_, personCertificate.person_id as person_i5_7_0_
from person_certificate personCertificate
where personCertificate.person.id = ? and personCertificate.person.id = ?
Как вы видите, personId упоминается как personCertificate.person.id, который не является правильный.
Также он дублируется ...
Что я здесь не так делаю?
Он работает с JPAQuery, но мне нужно использовать SQLExpressions.datediff, который не работает с JPAQuery