是否可以通过SetPath表达式对实体进行排序?

时间:2019-01-23 17:38:18

标签: java spring-boot querydsl

我有一个spring-boot应用程序。有很多实体。某些实体Task具有与其他实体Set<User>的{​​{1}}类似的成员。因此,我需要按照由User实体的某些字符串数据组成的连接字符串值对Task实体的列表进行排序。是否有可能通过使用querydsl表达式来做到这一点?

因此,代码:

User

例如,它如何按@Entity public class User { @Id @GeneratedValue private Long id; @NotNull @Column(unique=true) private String email; } @Entity public class Task { @Id @GeneratedValue private Long id; @ManyToMany @JoinTable( name = "reviewerTaskAssociation", joinColumns = @JoinColumn(name = "taskId") ) private Set<User> reviewers = new HashSet<>(); } //Generated public class QTask extends EntityPathBase<Task> { public static final QTask task = new QTask("task"); public final NumberPath<Long> id = createNumber("id", Long.class); public final SetPath<User, QUser> reviewers = this.<User, QUser>createSet("reviewers", User.class, QUser.class, PathInits.DIRECT2); ... } 进行排序:

id

我需要按连接字符串值对... List<OrderSpecifier<?>> orders = Collections.singletonList(((ComparableExpressionBase<?>)(QTask.task.id)).asc()); Pageable pageable = PageRequest.of(pageIndex, pageSize, new QSort(orders)); Page<Task> page = repository.findAll(predicate, pageable); List<DTO> dtos = page.stream().map(mapper::map).collect(Collectors.toList()); ... 的列表进行排序,该字符串值由Task的电子邮件中用逗号分隔:

User

是否可以通过操纵"user1@email.com,user2@email.com,user3@email.com" 表达式SetPath来做到这一点?

例如,我如何看待这一点:

QTask.task.reviewers

谢谢!

0 个答案:

没有答案