如何使用休眠过滤器过滤休眠中的实体
How to filter an entity in hibernate with hibernate filters
我需要过滤对象列表中的实体,例如:
public class Student {
private int id;
private List<Course> courses;
}
public class Course {
private int id;
private String name;
private float note;
private Classroom classroom;
}
public class Classroom {
private int id;
private String classroom;
}
如何获取一个学生对象,其中包含课程列表,其中只有笔记大于 70,并且位于 23 号教室(例如)?
有没有办法使用实体的名称而不是数据库的列之一?
或者我如何关联 sql hibernate 为实体生成的别名?
我从休眠过滤器中附加了一个 link:
https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch19.html
好的,它认为这应该可以解决问题:
实体
public class Student {
private int id;
@OneToMany(mappedBy = "student")
@Filter(name = "defaultCoursesFilter")
private List<Course> courses;
}
@FilterDef(name = "defaultCoursesFilter"
, defaultCondition=" notes > 70")
public class Course {
private int id;
private String name;
private float note;
@ManyToOne
@Filter(name = "defaultClassromFilter")
private Classroom classroom;
}
@FilterDef(name = "defaultClassromFilter"
, defaultCondition=" id = 23")
public class Classroom {
private int id;
private String classroom;
}
查询前
Session session = sessionFactory.getCurrentSession();
session.enableFilter("defaultCoursesFilter");
session.enableFilter("defaultClassromFilter");
// query
我需要过滤对象列表中的实体,例如:
public class Student {
private int id;
private List<Course> courses;
}
public class Course {
private int id;
private String name;
private float note;
private Classroom classroom;
}
public class Classroom {
private int id;
private String classroom;
}
如何获取一个学生对象,其中包含课程列表,其中只有笔记大于 70,并且位于 23 号教室(例如)?
有没有办法使用实体的名称而不是数据库的列之一?
或者我如何关联 sql hibernate 为实体生成的别名?
我从休眠过滤器中附加了一个 link: https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch19.html
好的,它认为这应该可以解决问题:
实体
public class Student {
private int id;
@OneToMany(mappedBy = "student")
@Filter(name = "defaultCoursesFilter")
private List<Course> courses;
}
@FilterDef(name = "defaultCoursesFilter"
, defaultCondition=" notes > 70")
public class Course {
private int id;
private String name;
private float note;
@ManyToOne
@Filter(name = "defaultClassromFilter")
private Classroom classroom;
}
@FilterDef(name = "defaultClassromFilter"
, defaultCondition=" id = 23")
public class Classroom {
private int id;
private String classroom;
}
查询前
Session session = sessionFactory.getCurrentSession();
session.enableFilter("defaultCoursesFilter");
session.enableFilter("defaultClassromFilter");
// query