JPA / Hibernate "Predicate" kombinieren in der gleichen Query

internet

Top Contributor
Hallo,

ich habe folgendes Problem:
Ich möchte von meinem Frontend Controller eine Query (WHERE Bedingung weitergeben an meine Datenbankschicht).

Ich meinem Frontend Controller generiere ich mir hierfür ein Predicate Objekt:
Java:
        List<Predicate> predicatesList = new ArrayList<>();
        JpaCriteriaHelper jpaCriteriaHelper = jpaUtilBean.createCriteriaBuilder(PicGallery.class);
        Root<PicGallery> itemRoot = jpaCriteriaHelper.getItemRoot();
        CriteriaBuilder criteriaBuilder = jpaCriteriaHelper.getCriteriaBuilder();

        predicatesList.add(criteriaBuilder.isFalse(itemRoot.get("deleteFlag")));

Das ist eine Hilfsklasse / Methode von jpaUtilBean, das mir ItemRoot und CriteryQuery / Builder generiert...
Code:
@SuppressWarnings({ "unchecked", "rawtypes" })
    public <T> JpaCriteriaHelper createCriteriaBuilder(Class<T> entityClass) {

        JpaCriteriaHelper jpaCriteriaHelper = new JpaCriteriaHelper();

        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        jpaCriteriaHelper.setCriteriaBuilder(criteriaBuilder);

        CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(entityClass);
        jpaCriteriaHelper.setCriteriaQuery(criteriaQuery);

        Root<T> itemRoot = criteriaQuery.from(entityClass);
        jpaCriteriaHelper.setItemRoot(itemRoot);

        return jpaCriteriaHelper;
    }

Da ich Primefaces verwende, wird ebenfalls hier eine neue Query erzeugt (siehe Implementierung von JpaLazyDataModel von Primefaces)

Siehe auch: https://primefaces.github.io/primefaces/12_0_0/#/components/datatable?id=lazy-loading
1658744224039.png

Ich habe nun mir eine Klasse erstellt, die mir eine Liste aus Predicate aus dem Controller durchschleift:
Code:
public class LazyLoadingHelper<T> {

    private JpaLazyDataModel jpaLazyDataModel;

    public LazyLoadingHelper(Class<T> entityClass, List<Predicate> predicatesList, EntityManager entityManager) {
        this.jpaLazyDataModel = createJpaLazyDataModel(entityClass, predicatesList, entityManager);
    }

    public <T> JpaLazyDataModel createJpaLazyDataModel(Class<T> entityClass, List<Predicate> predicatesList,
            EntityManager entityManager) {

        JpaLazyDataModel lazyModel = new JpaLazyDataModel<T>(entityClass, () -> entityManager, "id") {

            @Override
            protected void applyGlobalFilters(CriteriaBuilder cb, CriteriaQuery<?> cq, Root<T> root,
                    List<Predicate> predicates) {

                if (predicatesList != null && !predicatesList.isEmpty()) {
                   
                    for(Predicate  p : predicatesList) {
                        Predicate finalQuery = cb.and(p);
                        predicates.add(finalQuery);
                    }
                }
            }

Das Problem ist nun aber, wenn ich die Predicate aus der Controller Klasse durchschleife, erhalte ich einen anderen Alias:

Invalid path: [select count(generatedAlias0) from de.test.model.MyClass as generatedAlias0 where generatedAlias1.deleteFlag = false]

Kann hier jemand helfen?
 

d00d

Mitglied
Du musst einen alias für das root-Objekt setzen, der an allen Stellen gleich lautet, an denen du Predicates generierst, die innerhalb der selben Query verwendet werden sollen. Also in deinem Frontend-Controller und deiner Hilfsklasse jeweils.

Java:
itemRoot.alias("myAlias");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Element n aus Datenbank Query (JPA / Hibernate) Java Basics - Anfänger-Themen 3
I BLOB / CLOB und Hibernate... Ratschläge benötigt Java Basics - Anfänger-Themen 10
B HQL / Hibernate, GroupBy und Ausgabe als Double Java Basics - Anfänger-Themen 1
D hibernate annotation Java Basics - Anfänger-Themen 2
D hibernate: string vs setparameter Java Basics - Anfänger-Themen 1
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
Todesbote Int Array mit Hibernate in Datenbank speichern. Java Basics - Anfänger-Themen 2
DStrohma Best Practice Hibernate für kleine Anwendung nutzen? Java Basics - Anfänger-Themen 4
I Hibernate Java Basics - Anfänger-Themen 4
T Hibernate Fehlermeldung Java Basics - Anfänger-Themen 9
D [Hibernate] Objektinhalte auslesen Java Basics - Anfänger-Themen 8
N Hibernate "Hello World" Tutorial gesucht Java Basics - Anfänger-Themen 9
F Logging von Hibernate-Statements und Glassfish Java Basics - Anfänger-Themen 2
G Maps und Hibernate - Performancefrage Java Basics - Anfänger-Themen 2
G hibernate . tutorial prob . Java Basics - Anfänger-Themen 4
G org.hibernate.MappingException:An AnnotationConfiguration. Java Basics - Anfänger-Themen 3
G [Hibernate] Node to traverse cannot be null Java Basics - Anfänger-Themen 3
G java.lang.IllegalArgumentException -> Hibernate Java Basics - Anfänger-Themen 2
G Hibernate, JDO und Alternativen Java Basics - Anfänger-Themen 4
G [Hibernate] Richtiger ColumnType Java Basics - Anfänger-Themen 2
G [Hibernate] Aus SQL-Statement Entities erzeugen Java Basics - Anfänger-Themen 2
G [Hibernate] Constraints über mehrere Tabellen Java Basics - Anfänger-Themen 2
G [Hibernate] Could not find a setter for property Java Basics - Anfänger-Themen 2
M [Hibernate] "Illegal start of expression"-Fehler b Java Basics - Anfänger-Themen 2
B Hibernate - DB2 - Java Java Basics - Anfänger-Themen 3
M [Hibernate]: Cascade-Frage Java Basics - Anfänger-Themen 4
S Hibernate Session: Wie in alle Klassen Java Basics - Anfänger-Themen 19
M [Hibernate] Speichern von ManyToOne-Beziehungen in der DB Java Basics - Anfänger-Themen 12
G JTable aus Hibernate Zeile löschen Java Basics - Anfänger-Themen 4
H [Hibernate] HibernateSessionFactory Pfad setzen Java Basics - Anfänger-Themen 4
G [Hibernate] Dynamischer Datenbankpfad Java Basics - Anfänger-Themen 4
G [Hibernate] Laden aus DB funktioniert nicht Java Basics - Anfänger-Themen 8
G [Hibernate] Beschränkte Selektion Java Basics - Anfänger-Themen 2
G [Hibernate] StaleStateException beim Löschen Java Basics - Anfänger-Themen 3
G Einfacher Anfang mit Hibernate Java Basics - Anfänger-Themen 4
F [Hibernate] Debug INFO Einstellungen Java Basics - Anfänger-Themen 5
F [Hibernate] Alle Objekte laden aus der DB laden Java Basics - Anfänger-Themen 6
F [Hibernate] Id aus DB auslesen Java Basics - Anfänger-Themen 5
C Hibernate und Mandantenfähigkeit Java Basics - Anfänger-Themen 7
G hibernate tutorial Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
N Hibernate will nicht so wie ich Java Basics - Anfänger-Themen 4
B If Bedingungen kombinieren? Java Basics - Anfänger-Themen 5
I Java Klassen "Graphics" und "MouseEvent" kombinieren Java Basics - Anfänger-Themen 7
A Arrays kombinieren (länge eines Arrays kann 0 sein) Java Basics - Anfänger-Themen 6
C Zwei Integer Arrays "kombinieren" Java Basics - Anfänger-Themen 10
G 2 Listen kombinieren und nach abc sortieren Java Basics - Anfänger-Themen 9
D jtable renderer und sortieren kombinieren Java Basics - Anfänger-Themen 3
N String kombinieren - Methode Java Basics - Anfänger-Themen 5
B Erste Schritte Strings kombinieren Java Basics - Anfänger-Themen 10
J Switch mit if anweisung kombinieren Java Basics - Anfänger-Themen 2
D Kann man eine for-Schleife mit switch kombinieren? Java Basics - Anfänger-Themen 8
S Print Methode zweier "Classes" kombinieren Java Basics - Anfänger-Themen 2
S Variablen kombinieren Java Basics - Anfänger-Themen 5
S Rechtecke zu moeglichst groesseren Rechtecken kombinieren? Java Basics - Anfänger-Themen 7
T 2 Klassen kombinieren Java Basics - Anfänger-Themen 6
F 4 STrings in allen Kombinationen miteinander kombinieren Java Basics - Anfänger-Themen 2
D Algorithmus, beliebige Anzahl doubles kombinieren Java Basics - Anfänger-Themen 7
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
S Botton und Image kombinieren Java Basics - Anfänger-Themen 3
G zwei if's und Ausgabe kombinieren Java Basics - Anfänger-Themen 3
G LayoutManager kombinieren Java Basics - Anfänger-Themen 2
H Thread mit AWT-Oberfläche kombinieren Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben