JpaSQLQuery с @ManyToOne -> где критерии не работают - PullRequest
0 голосов
/ 19 марта 2020

Я использую 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

...