by Anonymous » 26 Aug 2025, 09:17
Ich kämpfe mit der Wiederverwendung einer Spezifikation innerhalb eines anderen.
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?>
Ich kämpfe mit der Wiederverwendung einer Spezifikation innerhalb eines anderen.[code]Group[/code] hat eine Liste von studentGroupinfo . Die Gruppen, die mit dieser Spezifikation übereinstimmen,
[b] Repository [/b]:
[code]public interface StudentGroupInfoRepository extends JpaRepository {
long count(Specification specification);
}
[/code]
[b] Versuch, die Gruppenspezifikation über Unterabfrage wiederzuverwenden [/b]:
[code]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);
};
}
[/code]
[b] Problem [/b]:
Wenn die Gruppenspezifikation einfach ist, funktioniert es.[code]Caused by: org.hibernate.sql.ast.SqlTreeCreationException: Could not locate TableGroup - com.sdx.rootservice.model.group.Group(...)
[/code]
Ich gehe davon aus, dass es passiert, weil ich die äußere Abfrage in gruppenspezifikation [url=viewtopic.php?t=23808]übergeben[/url] habe. Verwenden Sie eine vorhandene Spezifikation innerhalb einer Unterabfrage in einer anderen Spezifikation?>