提问人:Ahmed Yusuf 提问时间:11/16/2023 最后编辑:Georgii LvovAhmed Yusuf 更新时间:11/17/2023 访问量:22
无法通过java springboot中的jpql查询对内部实体进行排序
Unable to sort inner entities through jpql query in java springboot
问:
以下是来自我的springboot项目中存储库的jpql查询:
public interface TaskRepository extends JpaRepository<TaskEntity, UUID> {
@Query("SELECT DISTINCT t FROM TaskEntity t JOIN t.processes p JOIN p.agents a WHERE a.id = :agentId ORDER BY p.iat DESC")
Set<TaskEntity> findTasksByAgentId(UUID agentId);
}
所需的输出是包含已提供代理 ID 的进程的任务列表。我得到了这个输出,但是我也希望进程按 iat(创建时间)排序。
但是,进程不会按此查询排序。请注意,进程是任务的内部实体,因此部分查询不起作用。ORDER BY p.iat DESC
我也尝试了另一个查询:
@Query("SELECT DISTINCT t FROM TaskEntity t JOIN t.processes p JOIN p.agents a WHERE a.id = :agentId GROUP BY t.id ORDER BY MAX(p.iat) DESC")
Set<TaskEntity> findTasksByAgentId(UUID agentId);
但输出未排序。
以下是我的任务实体供参考:
public class TaskEntity {
@Id
@GeneratedValue(generator = "hibernate-uuid")
@Type(type = "uuid-char")
private UUID id;
private String name;
private String description;
@Enumerated
private StatusEnum status;
@ManyToMany(mappedBy = "task", fetch = FetchType.EAGER)
private Set<ProcessEntity> processes;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "task_customer",
joinColumns = @JoinColumn(name = "task_id"),
inverseJoinColumns = @JoinColumn(name = "customer_id")
)
private Set<CustomerEntity> customers;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name = "task_agent",
joinColumns = @JoinColumn(name = "task_id"),
inverseJoinColumns = @JoinColumn(name = "agent_id")
)
private Set<AgentEntity> agents;
private Date iat;
private Date uat;
@PrePersist
protected void onCreate() {
iat = new Date();
}
@PreUpdate
protected void onUpdate() {
uat = new Date();
}
}
答: 暂无答案
评论