【发布时间】:2018-06-04 17:03:37
【问题描述】:
是否有机会使用谓词获取连接实体?
@Entity
public class Student {
@Id
private int id;
private String hobby;
private String favouriteColor;
private String name;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.REFRESH)
@JoinColumn(name = "CLASS_ID", referencedColumnName = "ID")
private Classroom classroom;
}
@Entity
public class Classroom {
@Id
private int id;
private String classRoom;
private List<Student> students;
}
我有一些谓词
public class StudentPredicate {
private StudentPredicate() {}
public static Predicate createPredicate(final Student filter) {
QStudent student = QStudent.student;
BooleanBuilder builder = new BooleanBuilder();
if (isNotBlank(filter.getHobby())) {
builder.and(student.hobby.eq(filter.getHobby());
}
if (isNotBlank(filter.getFavouriteColor())) {
builder.and(student.favouriteColor.eq(filter.getFavouriteColor()));
}
return builder.getValue();
}
}
和存储库
@Repository
public interface StudentRepository extends CrudRepository<Student, Integer>, QueryDslPredicateExecutor<Student> {
}
现在我怎样才能找到所有已获取教室的学生?
studentRepository.findAll(predicate)
查询dsl这些findAll应该取教室怎么说?
【问题讨论】:
标签: java spring-data spring-data-jpa querydsl