英文:
JPQL/HQL delete query with spring data jpa
问题
我对JPQL/HQL并不太熟悉,所以这个问题可能有点愚蠢,我正在尝试使用字符串JPA编写删除查询。
我有一个GeneratedStatement
对象,它有一个包含createdDate
的GeneratedStatementId
对象。
我的查询应该类似这样:
@Query(value = "DELETE FROM EODGeneratedStatement s WHERE s.createdDate < :expiryDate")
int deleteByIdCreatedDateBefore(LocalDate expiryDate);
但我觉得它缺少了GeneratedStatementId
对象,我不太确定该如何添加它。我认为它应该像s.getGeneratedStatementId().createdDate
这样。
英文:
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.
I have GeneratedStatement
object which has GeneratedStatementId
object which consists of 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. It should be like s.getGeneratedStatementId().createdDate something I believe
答案1
得分: 0
我假设您有一个名为GeneratedStatement
的@Entity
,其中包含一个名为GeneratedStatementId
的POJO对象,其中包含变量createdDate
。
如果您正在寻找GeneratedStatement
和GeneratedStatementId
之间的@OneToOne
映射,下面的查询应该可以工作。
@Query(value = "DELETE FROM GeneratedStatement s LEFT JOIN s.GeneratedStatementId sid WHERE sid.createdDate < :expiryDate")
int deleteByIdCreatedDateBefore(LocalDate expiryDate);
@OneToOne
映射和FetchType
都是Lazy
:
@Query(value = "DELETE FROM GeneratedStatement s LEFT JOIN FETCH s.GeneratedStatementId sid WHERE sid.createdDate < :expiryDate")
英文:
I assume you have an @Entity
named GeneratedStatement
which has GeneratedStatementId
POJO object in it which contain variable createdDate
.
If you are looking for a @OneToOne
Mapping between GeneratedStatement
and GeneratedStatementId
, below query should work.
@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
,
@Query(value = "DELETE FROM GeneratedStatement s left join fetch
s.GeneratedStatementId sid WHERE sid.createdDate < :expiryDate")
专注分享java语言的经验与见解,让所有开发者获益!
评论