Federdaten JPA: Wie kann ich die Spezifikation <T> innerhalb einer anderen Spezifikation <f> mit Unterabschnitt wiederveJava

Java-Forum
Anonymous
 Federdaten JPA: Wie kann ich die Spezifikation <T> innerhalb einer anderen Spezifikation <f> mit Unterabschnitt wiederve

Post by Anonymous »

Ich kämpfe mit der Wiederverwendung einer Spezifikation innerhalb eines anderen.

Code: Select all

Group
hat eine Liste von studentGroupinfo . Die Gruppen, die mit dieser Spezifikation übereinstimmen,

Repository :

Code: Select all

public interface StudentGroupInfoRepository extends JpaRepository {
long count(Specification specification);
}
Versuch, die Gruppenspezifikation über Unterabfrage wiederzuverwenden :

Code: Select all

private Specification buildSpecificationByGroupSpecification(
Specification groupSpecification) {
return (root, query, builder) -> {
var subquery = query.subquery(Long.class);
var groupRoot = subquery.from(Group.class);

// how to apply the groupSpecification here?
var groupPredicate = groupSpecification.toPredicate(groupRoot, query /* ??? */, builder);

subquery.select(groupRoot.get(BaseEntity.Fields.id))
.where(groupPredicate);
return root.get(StudentGroupInfo.Fields.group).in(subquery);
};
}
Problem :
Wenn die Gruppenspezifikation einfach ist, funktioniert es.

Code: Select all

Caused by: org.hibernate.sql.ast.SqlTreeCreationException: Could not locate TableGroup - com.sdx.rootservice.model.group.Group(...)
Ich gehe davon aus, dass es passiert, weil ich die äußere Abfrage in gruppenspezifikation übergeben habe. Verwenden Sie eine vorhandene Spezifikation innerhalb einer Unterabfrage in einer anderen Spezifikation?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post