How to filter an entity in hibernate with hibernate filters
13,478
Ok it think this should do the trick:
Entities
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;
}
Before query
Session session = sessionFactory.getCurrentSession();
session.enableFilter("defaultCoursesFilter");
session.enableFilter("defaultClassromFilter");
// query
Related videos on Youtube
Author by
Jason Glez
Updated on June 04, 2022Comments
-
Jason Glez almost 2 years
I need to filter an entity in a list of objects, for example:
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; }
How to obtain a student object with a list of courses with only notes greater than 70, and located in classroom 23 (for example)?
Is there a way to use the name of the entity instead of the one of the column of the database?
Or how do I associate with sql the alias generated by hibernate for the entity?
I attach a link from the hibernate filters: https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch19.html
-
Maciej Kowalski over 7 yearsHave you tried any configuration yourself? Maybe you can post it and lets see whats wrong with it. Did you get any errors etc.
-
Jason Glez over 7 yearsI just want to know if it can be filtered by the java entity, not by the database entity.
-
Jason Glez over 7 yearsAnd how to do the join with the alias that generates hibernate dynamically.
-
-
Jason Glez over 7 yearsThank you very much, I'll try.