我有一个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
谢谢!