1

Ich brauche zum Filtern eine Entität in einer Liste von Objekten zu filtern, zum Beispiel:wie ein Unternehmen in Hibernate mit Hibernate Filter

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; 

} 

Wie ein Student-Objekt mit einer Liste von Kursen zu erhalten, mit nur mehr Noten als 70, und im Klassenzimmer 23 (zum Beispiel)?

Gibt es eine Möglichkeit, den Namen der Entität anstelle der Spalte der Datenbank zu verwenden?

Oder wie verbinde ich mit sql den Alias ​​generiert von Hibernate für die Entität?

lege ich einen Link von den Hibernate-Filter: https://docs.jboss.org/hibernate/orm/5.0/manual/en-US/html/ch19.html

+0

Haben Sie selbst eine Konfiguration probiert? Vielleicht kannst du es posten und sehen, was damit nicht stimmt. Haben Sie irgendwelche Fehler etc. –

+0

Ich möchte nur wissen, ob es von der Java-Entität gefiltert werden kann, nicht von der Datenbank-Entität. –

+0

Und wie man den Join mit dem Alias, der Hibernate dynamisch erzeugt, macht. –

Antwort

1

Ok denke, es ist dies der Trick tun sollten:

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; 

} 

Bevor Abfrage

Session session = sessionFactory.getCurrentSession(); 
session.enableFilter("defaultCoursesFilter"); 
session.enableFilter("defaultClassromFilter"); 

// query 
+0

Vielen Dank, ich werde es versuchen. –