简体   繁体   English

JPQL/HQL 删除查询与 spring 数据 jpa

[英]JPQL/HQL delete query with spring data jpa

I'm not really familiar with JPQL/HQL, so the question might be a bit dumb, I'm trying to write a delete query with string jpa.我不太熟悉 JPQL/HQL,所以这个问题可能有点愚蠢,我正在尝试使用字符串 jpa 编写删除查询。

I have GeneratedStatement object which has GeneratedStatementId object which consists of createdDate .我有GeneratedStatement object ,它有GeneratedStatementId object ,它由createdDate组成。

My query should look something like this:我的查询应该是这样的:

@Query(value = "DELETE FROM EODGeneratedStatement s WHERE s.createdDate < :expiryDate")
int deleteByIdCreatedDateBefore(LocalDate expiryDate);

But I think it lacks the GeneratedStatementId object in it, and I'm not sure how to add it.但我认为它缺少 GeneratedStatementId object ,我不知道如何添加它。 It should be like s.getGeneratedStatementId().createdDate something I believe它应该像我相信的 s.getGeneratedStatementId().createdDate

I assume you have an @Entity named GeneratedStatement which has GeneratedStatementId POJO object in it which contain variable createdDate .我假设您有一个名为GeneratedStatement@Entity ,其中包含GeneratedStatementId POJO object ,其中包含变量createdDate

If you are looking for a @OneToOne Mapping between GeneratedStatement and GeneratedStatementId , below query should work.如果您正在寻找GeneratedStatementGeneratedStatementId之间的@OneToOne映射,则下面的查询应该可以工作。

@Query(value = "DELETE FROM GeneratedStatement s left join 
                        s.GeneratedStatementId sid WHERE sid.createdDate < :expiryDate")
int deleteByIdCreatedDateBefore(LocalDate expiryDate);

@OneToOne Mapping and FetchType is Lazy , @OneToOne映射和FetchTypeLazy

@Query(value = "DELETE FROM GeneratedStatement s left join fetch 
                        s.GeneratedStatementId sid WHERE sid.createdDate < :expiryDate")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM