共有三个表:
my_entity: id, ....
comment: id, my_entity_id, description_id, date, active ...
description: id, ...
在代码中它看起来像这样:
@Table(name = "my_entity")
public class MyEntity {
@OneToMany(mappedBy = my_entity_id, cascade = CascadeType.ALL)
private Set<@Valid CommentEntity> comments;
}
@Table(name = "comment")
public class CommentEntity {
@ManyToOne(cascade = {CascadeType.REFRESH, CascadeType.DETACH}, optional = false)
@JoinColumn(name = "my_entity_id", nullable = false)
protected MyEntity myEntity;
@Column(name = "description_id")
@Convert(converter = DescriptionConverter.class)
private Descriprtion description;
}
如您所见,它MyEntity
有一系列评论。
我正在使用QueryDSL
. 我创建了BooleanBuilder
. 我试图在那里提出一个条件:
查找具有特定评论的实体 (MyEntity) Description
。这假设我已经有一个Description
. 在这种情况下,在评论数组中,您只需按日期获取最后一个活动评论。
如果MyEntity
没有Set
,但立即是一个类变量Comment
,我会这样做:
builder.and(myEntity.comment.description.eq(description)).
但就我而言,我仍然需要选择最后一个活动评论并检查是否存在指定的description
. 并且只有这样的评论才能返回entity
。
我怎样才能提出这样的要求?
试试这样: